home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60c / INTERRUP.N < prev    next >
Text File  |  1999-01-03  |  282KB  |  7,248 lines

  1. Interrupt List, part 14 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------D-31---------------------------------
  4. INT 31 - overwritten by CP/M jump instruction in INT 30
  5. --------v-31---------------------------------
  6. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  7. Note:    if one of the Vacsina viruses is resident, the low byte of this
  8.       interrupt still contains the last byte of the INT 30 CP/M JMP
  9.       instruction, but the remaining three bytes are 7Fh 39h followed
  10.       by the Vacsina version number
  11. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  12. --------E-310000-----------------------------
  13. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  14.     AX = 0000h
  15.     CX = number of descriptors to allocate
  16. Return: CF clear if successful
  17.         AX = base selector
  18.     CF set on error
  19.         AX = error code (DPMI 1.0+) (see #03143)
  20. Notes:    DPMI is the DOS Protected-Mode Interface
  21.     the base and limit of the returned descriptors will be 0, and the type
  22.       will be "data"
  23.     add the value returned by INT 31/AX=0003h to move to subsequent
  24.       descriptors if multiple descriptors were allocated
  25.     not supported by MS Windows 3.0 in Standard mode
  26. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  27.  
  28. (Table 03143)
  29. Values for DPMI 1.0 error code:
  30.  0000h-7FFFh DOS error passed through by DPMI
  31.  8001h    unsupported function
  32.  8002h    object in wrong state for function
  33.  8003h    system integrity would be endangered
  34.  8004h    deadlock detected
  35.  8005h    pending serialization request cancelled
  36.  8010h    out of DPMI internal resources
  37.  8011h    descriptor unavailable
  38.  8012h    linear memory unavailable
  39.  8013h    physical memory unavailable
  40.  8014h    backing store unavailable
  41.  8015h    callback unavailable
  42.  8016h    handle unavailable
  43.  8017h    maximum lock count exceeded
  44.  8018h    shared memory already serialized exclusively by another
  45.  8019h    shared memory already serialized shared by another client
  46.  8021h    invalid value for numeric or flag parameter
  47.  8022h    invalid segment selector
  48.  8023h    invalid handle
  49.  8024h    invalid callback
  50.  8025h    invalid linear address
  51.  8026h    request not supported by hardware
  52. --------E-310001-----------------------------
  53. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  54.     AX = 0001h
  55.     BX = selector to free
  56. Return: CF clear if successful
  57.     CF set on error
  58.         AX = error code (DPMI 1.0+) (8022h) (see #03143)
  59. Notes:    only one descriptor is freed per call
  60.     the program's initial CS, DS, and SS descriptors may be freed
  61.     (DPMI 1.0+) any segment registers containing the freed selector are
  62.       set to 0000h
  63.     not supported by MS Windows 3.0 in Standard mode
  64. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  65. --------E-310002-----------------------------
  66. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  67.     AX = 0002h
  68.     BX = real mode segment
  69. Return: CF clear if successful
  70.         AX = selector corresponding to real mode segment (64K limit)
  71.     CF set on error
  72.         AX = error code (DPMI 1.0+) (8011h) (see #03143)
  73. Notes:    multiple calls for the same real mode segment return the same selector
  74.     the returned descriptor can never be modified or freed
  75.     not supported by MS Windows 3.0 in Standard mode
  76. --------E-310003-----------------------------
  77. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  78.     AX = 0003h
  79. Return: CF clear
  80.         AX = value to add to get next sequential selector
  81. Notes:    the increment will be a power of two
  82.     not supported by MS Windows 3.0 in Standard mode
  83. SeeAlso: AX=0000h
  84. --------E-310004-----------------------------
  85. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  86.     AX = 0004h
  87.     BX = selector to lock (prevent paging)
  88. Return: ???
  89. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  90.       specification, this function is called by MS Windows TASKMAN,
  91.       PROGMAN, and KERNEL
  92. SeeAlso: AX=0005h,AX=0600h
  93. --------E-310005-----------------------------
  94. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  95.     AX = 0005h
  96.     BX = selector to unlock (permit paging)
  97. Return: ???
  98. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  99.       specification, this function is called by MS Windows TASKMAN,
  100.       PROGMAN, and KERNEL
  101. SeeAlso: AX=0004h,AX=0601h
  102. --------E-310006-----------------------------
  103. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  104.     AX = 0006h
  105.     BX = selector
  106. Return: CF clear if successful
  107.         CX:DX = linear base address of segment
  108.     CF set on error
  109.         AX = error code (DPMI 1.0+) (8022h) (see #03143)
  110. Note:    not supported by MS Windows 3.0 in Standard mode
  111. SeeAlso: AX=0007h,INT 21/AX=3504h
  112. --------E-310007-----------------------------
  113. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  114.     AX = 0007h
  115.     BX = selector
  116.     CX:DX = linear base address
  117. Return: CF clear if successful
  118.     CF set on error
  119.         AX = error code (DPMI 1.0+) (8022h,8025h) (see #03143)
  120. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  121.     only the low 24 bits of the address will be used by 16-bit DPMI
  122.       implementations even on a 386 or higher
  123.     DPMI 1.0+ automatically reloads any segment registers containing the
  124.       selector being modified
  125.     not supported by MS Windows 3.0 in Standard mode
  126. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  127. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  128. --------E-310008-----------------------------
  129. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  130.     AX = 0008h
  131.     BX = selector
  132.     CX:DX = segment limit
  133. Return: CF clear if successful
  134.     CF set on error
  135.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
  136. Notes:    CX must be zero for 16-bit DPMI implementations
  137.     limits greater than 1MB must be page aligned (low 12 bits set)
  138.     only modify descriptors allocated with INT 31/AX=0000h
  139.     DPMI 1.0+ automatically reloads any segment registers containing the
  140.       selector being modified
  141.     not supported by MS Windows 3.0 in Standard mode
  142. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  143. SeeAlso: INT 2C/AX=0003h,#00501 at INT 15/AH=89h
  144. --------E-310009-----------------------------
  145. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  146.     AX = 0009h
  147.     BX = selector
  148.     CL = access rights/type byte (see #00502 at INT 15/AH=89h)
  149.     CH = 80386 extended rights/type byte (see #00505 at INT 15/AH=89h)
  150.         (32-bit DPMI implementations only)
  151. Return: CF clear if successful
  152.     CF set on error
  153.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
  154. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  155.     DPMI 1.0+ automatically reloads any segment registers containing the
  156.       selector being modified
  157.     not supported by MS Windows 3.0 in Standard mode
  158. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  159. SeeAlso: INT 2C/AX=0005h
  160. --------E-31000A-----------------------------
  161. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  162.     AX = 000Ah
  163.     BX = selector
  164. Return: CF clear if successful
  165.         AX = new data selector
  166.     CF set on error
  167.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
  168. Notes:    fails if selector in BX is not a code segment or is invalid
  169.     use INT 31/AX=0001h to free new selector
  170.     future changes to the original selector will not be reflected in the
  171.       returned alias selector
  172.     not supported by MS Windows 3.0 in Standard mode
  173. SeeAlso: AX=0001h
  174. --------E-31000B-----------------------------
  175. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  176.     AX = 000Bh
  177.     BX = LDT selector
  178.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  179. Return: CF clear if successful
  180.         buffer filled
  181.     CF set on error
  182.         AX = error code (DPMI 1.0+) (8022h) (see #03143)
  183. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  184.     not supported by MS Windows 3.0 in Standard mode
  185. SeeAlso: AX=000Ch
  186. --------E-31000C-----------------------------
  187. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  188.     AX = 000Ch
  189.     BX = LDT selector
  190.     ES:(E)DI -> 8-byte buffer containing descriptor
  191. Return: CF clear if successful
  192.     CF set on error
  193.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
  194. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  195.     only modify descriptors allocated with INT 31/AX=0000h
  196.     DPMI 1.0+ automatically reloads any segment registers containing the
  197.       selector being modified
  198.     not supported by MS Windows 3.0 in Standard mode
  199. SeeAlso: AX=000Bh
  200. --------E-31000D-----------------------------
  201. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  202.     AX = 000Dh
  203.     BX = LDT selector
  204. Return: CF clear if successful
  205.         descriptor allocated
  206.     CF set on error
  207.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
  208. Notes:    free descriptor with INT 31/AX=0001h
  209.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  210.       some may already be in use by other applications under DPMI 0.9;
  211.       DPMI 1.0 guarantees 16 descriptors per client
  212.     not supported by MS Windows 3.0 in Standard mode
  213. SeeAlso: AX=0000h,AX=0001h
  214. --------E-31000E-----------------------------
  215. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  216.     AX = 000Eh
  217.     CX = number of descriptors to copy
  218.     ES:(E)DI -> descriptor buffer (see #03144)
  219. Return: CF clear if successful
  220.         descriptors copied
  221.     CF set on error
  222.         AX = error code (8022h) (see #03143)
  223.         CX = number of descriptors successfully copied
  224. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  225.     if the function fails, the first CX descriptors are valid; the
  226.       remainder are not modified
  227. SeeAlso: AX=000Bh,AX=000Fh
  228.  
  229. Format of DPMI descriptor buffer entry (one per descriptor to get):
  230. Offset    Size    Description    (Table 03144)
  231.  00h    WORD    selector (set by client)
  232.  02h    QWORD    descriptor (set by host)
  233. --------E-31000F-----------------------------
  234. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  235.     AX = 000Fh
  236.     CX = number of descriptors to copy
  237.     ES:(E)DI -> descriptor buffer (see #03145)
  238. Return: CF clear if successful
  239.         descriptors copied
  240.     CF set on error
  241.         AX = error code (8021h,8022h,8025h) (see #03143)
  242.         CX = number of descriptors successfully copied
  243. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  244.     if the function fails, the first CX descriptors are valid; the
  245.       remainder are not modified
  246.     DPMI 1.0+ automatically reloads any segment registers containing a
  247.       selector being modified
  248. SeeAlso: AX=000Ch,AX=000Eh
  249.  
  250. Format of DPMI descriptor buffer entry (one per descriptor to set):
  251. Offset    Size    Description    (Table 03145)
  252.  00h    WORD    selector
  253.  02h    QWORD    descriptor
  254. --------E-310100-----------------------------
  255. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  256.     AX = 0100h
  257.     BX = number of paragraphs to allocate
  258. Return: CF clear if successful
  259.         AX = real mode segment of allocated block
  260.         DX = first selector for allocated block
  261.     CF set on error
  262.         AX = DOS error code (07h,08h) (see #01680 at INT 21/AH=59h/BX=0000h)
  263.         (DPMI 1.0+) DPMI error code (8011h) (see #03143)
  264.         BX = size (in paragraphs) of largest available block
  265. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  266.       if the caller is a 16-bit program
  267.     never modify or deallocate returned descriptors
  268.     not supported by MS Windows 3.0 in Standard mode
  269. SeeAlso: AX=0101h,AX=0501h
  270. --------E-310101-----------------------------
  271. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  272.     AX = 0101h
  273.     DX = selector of block
  274. Return: CF set if successful
  275.     CF set on error
  276.         AX = DOS error code (07h,09h) (see #01680 at INT 21/AH=59h/BX=0000h)
  277. Notes:    all descriptors allocated for the block are automatically freed
  278.     DPMI 1.0+ automatically zeros any segment registers containing a
  279.       selector freed by this function
  280.     not supported by MS Windows 3.0 in Standard mode
  281. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  282. --------E-310102-----------------------------
  283. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  284.     AX = 0102h
  285.     BX = new block size in paragraphs
  286.     DX = selector of block
  287. Return: CF clear if successful
  288.     CF set on error
  289.         AX = DOS error code (07h,08h,09h)
  290.           (see #01680 at INT 21/AH=59h/BX=0000h)
  291.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #03143)
  292.         BX = maximum block size (in paragraphs) possible
  293. Notes:    increasing the size of a block past a 64K boundary will fail if the
  294.       next descriptor in the LDT is already in use
  295.     shrinking a block past a 64K boundary will cause some selectors to be
  296.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  297.       a selector freed by this function
  298.     not supported by MS Windows 3.0 in Standard mode
  299. SeeAlso: AX=0100h
  300. --------E-310200-----------------------------
  301. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  302.     AX = 0200h
  303.     BL = interrupt number
  304. Return: CF clear
  305.     CX:DX = segment:offset of real mode interrupt handler
  306. Note:    the DPMI implementation is required to support all 256 vectors
  307. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  308. --------E-310201-----------------------------
  309. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  310.     AX = 0201h
  311.     BL = interrupt number
  312.     CX:DX = segment:offset of real mode handler
  313. Return: CF clear
  314. Note:    all memory that may be touched by a hardware interrupt handler must be
  315.       locked down with INT 31/AX=0600h
  316. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  317. --------E-310202-----------------------------
  318. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  319.     AX = 0202h
  320.     BL = exception number (00h-1Fh)
  321. Return: CF clear if successful
  322.         CX:(E)DX = selector:offset of handler
  323.     CF set on error
  324.         AX = error code (DPMI 1.0+) (8021h) (see #03143)
  325. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  326.     DPMI 1.0+ supports this function only for backward compatibility; use
  327.        AX=0210h or AX=0211h instead
  328.     not supported by MS Windows 3.0 in Standard mode
  329. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  330. --------E-310203-----------------------------
  331. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  332.     AX = 0203h
  333.     BL = exception number (00h-1Fh)
  334.     CX:(E)DX = selector:offset of handler
  335. Return: CF clear if successful
  336.     CF set on error
  337.         AX = error code (DPMI 1.0+) (8021h,8022h) (see #03143)
  338. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  339.       stack frame on chaining to the next exception handler
  340.     the handler should return using a FAR return
  341.     all fault stack frames contain an error code, but it is only valid for
  342.       exceptions 08h and 0Ah-0Eh
  343.     handlers will only be called if the exception occurs in protected mode,
  344.       and the DPMI host does not transparently handle the exception
  345.     the handler may change certain values on the stack frame
  346.       (see #03146,#03147)
  347.     DPMI 1.0+ supports this function only for backward compatibility; use
  348.        AX=0212h or AX=0213h instead
  349.     not supported by MS Windows 3.0 in Standard mode
  350. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  351.  
  352. Format of stack frame for 16-bit programs: (offset from SS:SP)
  353. Offset    Size    Description    (Table 03146)
  354.  00h    DWORD    return CS:IP (do not change)
  355.  04h    WORD    error code
  356.  06h    DWORD    CS:IP of exception
  357.  0Ah    WORD    flags
  358.  0Ch    DWORD    SS:SP
  359.  
  360. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  361. Offset    Size    Description    (Table 03147)
  362.  00h    DWORD    return EIP (do not change)
  363.  04h    WORD    return CS selector (do not change)
  364.  06h    WORD    reserved (do not change)
  365.  08h    DWORD    error code
  366.  0Ch    DWORD    EIP of exception
  367.  10h    WORD    CS selector of exception
  368.  12h    WORD    reserved (do not change)
  369.  14h    DWORD    EFLAGS
  370.  18h    DWORD    ESP
  371.  1Ch    WORD    SS
  372.  1Eh    WORD    reserved (do not change)
  373. --------E-310204-----------------------------
  374. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  375.     AX = 0204h
  376.     BL = interrupt number
  377. Return: CF clear
  378.     CX:(E)DX = selector:offset of handler
  379. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  380.     DPMI implementations are required to support all 256 vectors
  381.     not supported by MS Windows 3.0 in Standard mode
  382. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  383. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  384. --------E-310205-----------------------------
  385. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  386.     AX = 0205h
  387.     BL = interrupt number
  388.     CX:(E)DX = selector:offset of handler
  389. Return: CF clear if successful
  390.     CF set on error
  391.         AX = error code (DPMI 1.0+) (8022h) (see #03143)
  392. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  393.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  394.       to the next handler
  395.     DPMI implementations are required to support all 256 vectors
  396.     hardware interrupts are reflected to the virtual machine's primary
  397.       client, software interrupts to the current client
  398.     not supported by MS Windows 3.0 in Standard mode
  399. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  400. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  401. --------E-310210-----------------------------
  402. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  403.     AX = 0210h
  404.     BL = exception number (00h-1Fh)
  405. Return: CF clear if successful
  406.         CX:(E)DX = selector:offset of exception handler
  407.     CF set on error
  408.         AX = error code (8021h) (see #03143)
  409. Note:    DPMI host reflects exception to current client's handler
  410. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  411. --------E-310211-----------------------------
  412. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  413.     AX = 0211h
  414.     BL = exception number (00h-1Fh)
  415. Return: CF clear if successful
  416.         CX:(E)DX = selector:offset of exception handler
  417.     CF set on error
  418.         AX = error code (8021h) (see #03143)
  419. Notes:    returns address of protected-mode handler for real-mode exception
  420.     DPMI host performs a switch to protected mode, reflects the exception
  421.       to the virtual machine's primary client, and returns to real mode
  422.       on the handler's completion
  423. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  424. --------E-310212-----------------------------
  425. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  426.     AX = 0212h
  427.     BL = exception or fault number (00h-1Fh)
  428.     CX:(E)DX = exception handler selector:offset
  429. Return: CF clear if successful
  430.     CF set on error
  431.         AX = error code (8021h,8022h) (see #03143)
  432. Note:    DPMI host sends exception to current client's handler
  433. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  434. --------E-310213-----------------------------
  435. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  436.     AX = 0213h
  437.     BL = exception or fault number (00h-1Fh)
  438.     CX:(E)DX = exception handler selector:offset
  439. Return: CF clear if successful
  440.     CF set on error
  441.         AX = error code (8021h,8022h) (see #03143)
  442. Notes:    specifies address of protected-mode handler for real-mode exception
  443.     DPMI host performs a switch to protected mode, reflects the exception
  444.       to the virtual machine's primary client, and returns to real mode
  445.       on the handler's completion
  446. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  447. --------E-310300-----------------------------
  448. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  449.     AX = 0300h
  450.     BL = interrupt number
  451.     BH = flags
  452.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  453.             reserved, must be 0 (DPMI 1.0+)
  454.         others: reserved, must be 0
  455.     CX = number of words to copy from protected mode to real mode stack
  456.     ES:(E)DI = selector:offset of real mode call structure (see #03148)
  457. Return: CF clear if successful
  458.         real mode call structure modified (all fields except SS:SP, CS:IP
  459.           filled with return values from real mode interrupt)
  460.     CF set on error
  461.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
  462.     protected mode stack unchanged
  463. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  464.     CS:IP in the real mode call structure is ignored for this call,
  465.       instead, the indicated interrupt vector is used for the address
  466.     the flags in the call structure are pushed on the real mode stack to
  467.       form an interrupt stack frame, and the trace and interrupt flags are
  468.       clear on entry to the handler
  469.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  470.     the real mode handler must return with the stack in the same state as
  471.       it was on being called
  472. SeeAlso: AX=0302h,AX=FF01h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
  473. SeeAlso: INT 2C/AX=0026h,INT 2F/AX=FB42h/BX=000Dh
  474.  
  475. Format of DPMI real mode call structure:
  476. Offset    Size    Description    (Table 03148)
  477.  00h    DWORD    EDI
  478.  04h    DWORD    ESI
  479.  08h    DWORD    EBP
  480.  0Ch    DWORD    reserved (00h)
  481.  10h    DWORD    EBX
  482.  14h    DWORD    EDX
  483.  18h    DWORD    ECX
  484.  1Ch    DWORD    EAX
  485.  20h    WORD    flags
  486.  22h    WORD    ES
  487.  24h    WORD    DS
  488.  26h    WORD    FS
  489.  28h    WORD    GS
  490.  2Ah    WORD    IP
  491.  2Ch    WORD    CS
  492.  2Eh    WORD    SP
  493.  30h    WORD    SS
  494. --------E-310301-----------------------------
  495. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  496.     AX = 0301h
  497.     BH = flags
  498.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  499.             reserved, must be 0 (DPMI 1.0+)
  500.         others: reserved must be 0
  501.     CX = number of words to copy from protected mode to real mode stack
  502.     ES:(E)DI = selector:offset of real mode call structure
  503.           (see #03148 at INT 31/AX=0300h)
  504. Return: CF clear if successful
  505.         real mode call structure modified (all fields except SS:SP, CS:IP
  506.           filled with return values from real mode interrupt)
  507.     CF set on error
  508.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
  509.     protected mode stack unchanged
  510. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  511.     the real mode procedure must exit with a FAR return
  512.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  513.     the real mode handler must return with the stack in the same state as
  514.       it was on being called
  515. SeeAlso: AX=0300h,AX=0302h,AX=FF02h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  516. SeeAlso: INT 2C/AX=0025h
  517. --------E-310302-----------------------------
  518. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  519.     AX = 0302h
  520.     BH = flags
  521.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  522.             reserved, must be 0 (DPMI 1.0+)
  523.         others: reserved, must be 0
  524.     CX = number of words to copy from protected mode to real mode stack
  525.     ES:(E)DI = selector:offset of real mode call structure
  526.           (see #03148 at INT 31/AX=0300h)
  527. Return: CF clear if successful
  528.         real mode call structure modified (all fields except SS:SP, CS:IP
  529.           filled with return values from real mode interrupt)
  530.     CF set on error
  531.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
  532.     protected mode stack unchanged
  533. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  534.     the flags in the call structure are pushed on the real mode stack to
  535.       form an interrupt stack frame, and the trace and interrupt flags are
  536.       clear on entry to the handler
  537.     the real mode procedure must exit with an IRET
  538.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  539.     the real mode handler must return with the stack in the same state as
  540.       it was on being called
  541. SeeAlso: AX=0300h
  542. --------E-310303-----------------------------
  543. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  544.     AX = 0303h
  545.     DS:(E)SI = selector:offset of procedure to call
  546.     ES:(E)DI = selector:offset of real mode call structure (see #03148)
  547. Return: CF clear if successful
  548.         CX:DX = segment:offset of real mode call address (see #03149)
  549.     CF set on error
  550.         AX = error code (DPMI 1.0+) (8015h) (see #03143)
  551. Notes:    the real mode call structure is static, causing reentrancy problems;
  552.       its contents are only valid at the time of a callback
  553.     the called procedure must modify the real mode CS:IP before returning
  554.     values are returned to real mode by modifying the real mode call struc
  555.     DPMI hosts must provide at least 16 callbacks per client
  556.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  557.       not support this function
  558. SeeAlso: AX=0304h,AX=0C00h
  559.  
  560. (Table 03149)
  561. Values DPMI real-mode callback procedure is called with:
  562.     DS:(E)SI = selector:offset of real mode SS:SP
  563.     ES:(E)DI = selector:offset of real mode call structure
  564.     SS:(E)SP = locked protected mode API stack
  565.     interrupts disabled
  566. Return: (with IRET)
  567.     ES:(E)DI = selector:offset of real mode call structure to restore
  568. --------E-310304-----------------------------
  569. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  570.     AX = 0304h
  571.     CX:DX = real mode callback address
  572. Return: CF clear if successful
  573.     CF set on error
  574.         AX = error code (DPMI 1.0+) (8024h) (see #03143)
  575. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  576.       not support this function
  577. SeeAlso: AX=0303h
  578. --------E-310305-----------------------------
  579. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  580.     AX = 0305h
  581. Return: CF clear
  582.     AX = size in bytes of state buffer
  583.     BX:CX = real mode address of procedure to save/restore state
  584.     SI:(E)DI = protected mode procedure to save/restore state (see #03150)
  585. Notes:    the buffer size will be zero if it is not necessary to preserve state
  586.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  587.     this function is only needed if using the raw mode switch service
  588. SeeAlso: AX=0306h
  589.  
  590. (Table 03150)
  591. Call DPMI state-save procedures with:
  592.     AL = direction
  593.         00h save state
  594.         01h restore state
  595.     ES:(E)DI -> state buffer
  596. Return: all registers preserved
  597. --------E-310306-----------------------------
  598. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  599.     AX = 0306h
  600. Return: CF clear
  601.     BX:CX -> procedure to switch from real to protected mode (see #03151)
  602.     SI:(E)DI -> procedure to switch from protected to real mode
  603. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  604.     the caller must save and restore the state of the task with AX=0305h
  605.     not supported by MS Windows 3.0 in Standard mode
  606. SeeAlso: AX=0305h
  607.  
  608. (Table 03151)
  609. Values to JUMP at mode-switch procedures with:
  610.     AX = new DS
  611.     CX = new ES
  612.     DX = new SS
  613.     (E)BX = new (E)SP
  614.     SI:(E)DI = new CS:(E)IP
  615. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  616.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  617.     interrupts will stay disabled during the entire mode switch if they
  618.       are disabled on entry to the mode-switch procedure
  619. --------E-310400-----------------------------
  620. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  621.     AX = 0400h
  622. Return: CF clear
  623.     AH = major version of DPMI spec supported
  624.     AL = two-digit minor version of DPMI spec supported
  625.     BX = DPMI host flags (see #03152)
  626.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  627.     DH = curr value of virtual master interrupt controller base interrupt
  628.     DL = curr value of virtual slave interrupt controller base interrupt
  629. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  630.       release with fixes to CSD002 report version 0090h (0.144); this has
  631.       reportedly been corrected in the Windows NT 3.5 beta
  632. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 4B/AX=8102h/DX=0000h
  633. SeeAlso: INT 67/AX=DE0Ah
  634.  
  635. Bitfields for DPMI host flags:
  636. Bit(s)    Description    (Table 03152)
  637.  0    running under an 80386 (32-bit) implementation
  638.  1    processor returns to real mode for reflected interrupts instead of V86
  639.       mode
  640.  2    virtual memory supported
  641.  3    reserved (undefined)
  642.  4-15    reserved (zero)
  643. --------E-310401-----------------------------
  644. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  645.     AX = 0401h
  646.     ES:(E)DI -> 128-byte buffer for host description (see #03153)
  647. Return: CF clear if successful
  648.         AX = capabilities (see #03154)
  649.         CX = reserved (00h)
  650.         DX = reserved (00h)
  651.         buffer filled
  652.     CF set on error (DPMI 0.9 only)
  653. SeeAlso: AX=0400h
  654.  
  655. Format of DPMI host description:
  656. Offset    Size    Description    (Table 03153)
  657.  00h    BYTE    host major version number
  658.  01h    BYTE    host minor version number
  659.  02h 126 BYTEs    ASCIZ host vendor name
  660.  
  661. Bitfields for DPMI capabilities:
  662. Bit(s)    Description    (Table 03154)
  663.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  664.  1    exceptions restartability supported
  665.  2    device mapping supported (see AX=0508h)
  666.  3    conventional memory mapping supported (see AX=0509h)
  667.  4    demand zero-fill supported
  668.  5    write-protect client capability supported
  669.  6    write-protect host capability supported
  670.  7-15    reserved
  671. --------E-310500-----------------------------
  672. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  673.     AX = 0500h
  674.     ES:(E)DI -> buffer for memory information (see #03155)
  675. Return: CF clear
  676. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  677.     this function must be considered advisory because other applications
  678.       may affect the results at any time after the call
  679.     fields not supported by the DPMI implementation are filled with
  680.       FFFFFFFFh
  681.     DPMI 1.0+ supports this function solely for backward compatibility; use
  682.       AX=050Bh instead
  683.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  684.       returns the first field in the memory information record
  685. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  686.  
  687. Format of DPMI memory information:
  688. Offset    Size    Description    (Table 03155)
  689.  00h    DWORD    largest available block in bytes
  690.  04h    DWORD    maximum unlocked page allocation
  691.  08h    DWORD    maximum locked page allocation
  692.  0Ch    DWORD    total linear address space in pages
  693.  10h    DWORD    total unlocked pages
  694.  14h    DWORD    free pages
  695.  18h    DWORD    total physical pages
  696.  1Ch    DWORD    free linear address space in pages
  697.  20h    DWORD    size of paging file/partition in pages
  698.  24h 12 BYTEs    reserved
  699. --------E-310501-----------------------------
  700. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  701.     AX = 0501h
  702.     BX:CX = size in bytes
  703. Return: CF clear if successful
  704.         BX:CX = linear address of block
  705.         SI:DI = memory block handle for resizing and freeing block
  706.     CF set on error
  707.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #03143)
  708. Notes:    no selectors are allocated
  709.     the memory block is allocated unlocked (can be locked with AX=0600h)
  710.     allocations are often page granular (see AX=0604h)
  711.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  712.       for this function to fail even if AX=0500h indicates that enough
  713.       memory is available
  714. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  715. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  716. --------E-310502-----------------------------
  717. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  718.     AX = 0502h
  719.     SI:DI = handle of memory block
  720. Return: CF clear if successful
  721.     CF set on error
  722.         AX = error code (DPMI 1.0+) (8023h) (see #03143)
  723. Note:    any selectors allocated for the memory block must also be freed,
  724.       preferably before freeing the memory block
  725. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  726. --------E-310503-----------------------------
  727. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  728.     AX = 0503h
  729.     BX:CX = new size in bytes (nonzero)
  730.     SI:DI = handle of memory block
  731. Return: CF clear if successful
  732.         BX:CX = new linear address
  733.         SI:DI = new handle of memory block
  734.     CF set on error
  735.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  736.         (see #03143)
  737. Notes:    any selectors pointing at the block must be updated
  738.     the previous memory block handle becomes invalid
  739.     an error is returned if the new size is 0
  740. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  741. --------E-310504-----------------------------
  742. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  743.     AX = 0504h
  744.     EBX = page-aligned linear address of memory block (00000000h if any
  745.           address is acceptable)
  746.     ECX = size in bytes (nonzero)
  747.     EDX = flags
  748.         bit 0: set to create committed pages instead of uncommitted pages
  749.         bits 1-31 reserved (0)
  750. Return: CF clear if successful
  751.         EBX = linear address of memory block
  752.         ESI = memory block handle
  753.     CF set on error
  754.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #03143)
  755. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  756. SeeAlso: AX=0501h,AX=0505h
  757. --------E-310505-----------------------------
  758. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  759.     AX = 0505h
  760.     ESI = memory block handle
  761.     ECX = new size in bytes (nonzero)
  762.     EDX = flags
  763.         bit 0: create committed pages rather than uncommitted pages
  764.         bit 1: segment descriptor update required
  765.         ES:EBX -> buffer containing array of WORDs with selectors
  766.         EDI = number of selectors in array
  767.         bits 2-31 reserved (0)
  768. Return: CF clear if successful
  769.         EBX = new linear base address
  770.         ESI = new memory block handle
  771.     CF set on error
  772.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #03143)
  773. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  774.     the old memory block handle becomes invalid
  775.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  776.       all descriptors for selectors in the update buffer which fall within
  777.       the memory block
  778. SeeAlso: AX=0503h,AX=0504h
  779. --------E-310506-----------------------------
  780. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  781.     AX = 0506h
  782.     ESI = memory block handle
  783.     EBX = offset in memory block of first page
  784.     ECX = number of pages
  785.     ES:EDX -> array of WORDs to hold page attributes (see #03156)
  786. Return: CF clear if successful
  787.         buffer filled
  788.     CF set on error
  789.         AX = error code (8001h,8023h,8025h) (see #03143)
  790. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  791.     if EBX is not page-aligned, it will be rounded down
  792. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  793.  
  794. Bitfields for DPMI page attribute word:
  795. Bit(s)    Description    (Table 03156)
  796.  0-2    page type
  797.     000 uncommitted
  798.     001 committed
  799.     010 mapped (see AX=0508h,AX=0509h)
  800.     other currently unused
  801.  3    page is read/write rather than read-only
  802.  4    accessed/dirty bits supplied in bits 5 and 6
  803.  5    page has been accessed (only valid if bit 4 set)
  804.  6    page has been written (only valid if bit 4 set)
  805.  7-15    reserved (0)
  806. --------E-310507-----------------------------
  807. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  808.     AX = 0507h
  809.     ESI = memory block handle
  810.     EBX = offset in memory block of first page
  811.     ECX = number of pages
  812.     ES:EDX -> array of WORDs with new page attributes (see #03156)
  813. Return: CF clear if successful
  814.     CF set on error
  815.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  816.         (see #03143)
  817.         ECX = number of pages which have been set
  818. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  819.     if EBX is not page-aligned, it will be rounded down
  820. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  821. --------E-310508-----------------------------
  822. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  823.     AX = 0508h
  824.     ESI = memory block handle
  825.     EBX = page-aligned offset within memory block of page(s) to be mapped
  826.     ECX = number of pages to map
  827.     EDX = page-aligned physical address of device
  828. Return: CF clear if successful
  829.     CF set on error
  830.         AX = error code (8001h,8003h,8023h,8025h) (see #03143)
  831. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  832.     support of this function is optional; hosts are also allowed to support
  833.       the function for some devices but not others
  834. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  835. --------E-310509-----------------------------
  836. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  837.     AX = 0509h
  838.     ESI = memory block handle
  839.     EBX = page-aligned offset within memory block of page(s) to map
  840.     ECX = number of pages to map
  841.     EDX = page-aligned linear address of conventional (below 1M) memory
  842. Return: CF clear if successful
  843.     CF set on error
  844.         AX = error code (8001h,8003h,8023h,8025h) (see #03143)
  845. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  846.     support of this function is optional
  847. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  848. --------E-31050A-----------------------------
  849. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  850.     AX = 050Ah
  851.     SI:DI = memory block handle
  852. Return: CF clear if successful
  853.         SI:DI = size in bytes
  854.         BX:CX = base address
  855.     CF set on error
  856.         AX = error code (8023h) (see #03143)
  857. SeeAlso: AX=0501h,AX=0504h
  858. --------E-31050B-----------------------------
  859. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  860.     AX = 050Bh
  861.     ES:(E)DI -> 128-byte buffer for memory information (see #03157)
  862. Return: CF clear if successful
  863.     CF set on error (DPMI 0.9 only)
  864. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  865. SeeAlso: AX=0500h
  866.  
  867. Format of DPMI memory information:
  868. Offset    Size    Description    (Table 03157)
  869.  00h    DWORD    total allocated bytes of physical memory controlled by host
  870.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  871.  08h    DWORD    total available bytes of virtual memory controlled by host
  872.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  873.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  874.  14h    DWORD    total allocated bytes of virtual memory for current client
  875.  18h    DWORD    total available bytes of virtual memory for current client
  876.  1Ch    DWORD    total locked bytes for current client
  877.  20h    DWORD    maximum locked bytes for current client
  878.  24h    DWORD    highest linear address available to current client
  879.  28h    DWORD    largest available memory block in bytes
  880.  2Ch    DWORD    minimum allocation unit in bytes
  881.  30h    DWORD    allocation alignment unit size in bytes
  882.  34h 76 BYTEs    reserved (00h)
  883. --------E-310600-----------------------------
  884. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  885.     AX = 0600h
  886.     BX:CX = starting linear address
  887.     SI:DI = size of region in bytes
  888. Return: CF clear if successful
  889.     CF set on error
  890.         none of the memory is locked
  891.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #03143)
  892. Notes:    pages at beginning and end will be locked if the region overlaps them
  893.     may be called multiple times for a given page; the DPMI host keeps a
  894.       lock count for each page
  895. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  896. --------E-310601-----------------------------
  897. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  898.     AX = 0601h
  899.     BX:CX = starting linear address
  900.     SI:DI = size of region in bytes
  901. Return: CF clear if successful
  902.     CF set on error
  903.         none of the memory is unlocked
  904.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
  905. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  906.     memory whose lock count has not reached zero remains locked
  907. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  908. --------E-310602-----------------------------
  909. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  910.     AX = 0602h
  911.     BX:CX = starting linear address
  912.     SI:DI = size of region in bytes
  913. Return: CF clear if successful
  914.     CF set on error
  915.         none of the memory is made pageable
  916.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
  917. Notes:    must relock all unlocked real mode memory before terminating process
  918.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  919.     pages at beginning and end will be unlocked if the region overlaps them
  920.     pageability of real mode pages is binary, not a count
  921. SeeAlso: AX=0600h,AX=0603h
  922. --------E-310603-----------------------------
  923. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  924.     AX = 0603h
  925.     BX:CX = starting linear address
  926.     SI:DI = size of region in bytes
  927. Return: CF clear if successful
  928.     CF set on error
  929.         none of the memory is relocked
  930.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #03143)
  931. Notes:    pages at beginning and end will be relocked if the region overlaps them
  932.     pageability of real mode pages is binary, not a count
  933. SeeAlso: AX=0602h
  934. --------E-310604-----------------------------
  935. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  936.     AX = 0604h
  937. Return: CF clear if successful
  938.         BX:CX = page size in bytes
  939.     CF set on error
  940.         AX = error code (DPMI 1.0+) (see also #03143)
  941.         8001h unsupported, 16-bit host
  942. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  943.       unchanged
  944. --------E-310700-----------------------------
  945. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  946.     AX = 0700h
  947.     BX:CX = starting linear page number
  948.     SI:DI = number of pages to mark as paging candidates
  949. Return: ???
  950. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  951.       specification, this function is called by MS Windows TASKMAN,
  952.       PROGMAN, and KERNEL
  953. SeeAlso: AX=0701h,AX=0702h
  954. --------E-310701-----------------------------
  955. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  956.     AX = 0701h
  957.     BX:CX = starting linear page number
  958.     SI:DI = number of pages to discard
  959. Return: ???
  960. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  961.       specification, this function is called by MS Windows TASKMAN,
  962.       PROGMAN, and KERNEL
  963. SeeAlso: AX=0700h,AX=0703h
  964. --------E-310702-----------------------------
  965. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  966.     AX = 0702h
  967.     BX:CX = starting linear address
  968.     SI:DI = number of bytes to mark as paging candidates
  969. Return: CF clear if successful
  970.     CF set on error
  971.         AX = error code (DPMI 1.0+) (8025h) (see #03143)
  972. Notes:    this function is advisory, and does not force immediate paging
  973.     partial pages will not be discarded
  974. SeeAlso: AX=0700h,AX=0703h
  975. --------E-310703-----------------------------
  976. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  977.     AX = 0703h
  978.     BX:CX = starting linear address
  979.     SI:DI = number of bytes to mark as discarded
  980. Return: CF clear if successful
  981.     CF set on error
  982.         AX = error code (DPMI 1.0+) (8025h) (see #03143)
  983. Notes:    this function is advisory, and may be ignored by DPMI implementations
  984.     partial pages will not be discarded
  985. SeeAlso: AX=0701h,AX=0702h
  986. --------E-310800-----------------------------
  987. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  988.     AX = 0800h
  989.     BX:CX = physical address (should be above 1 MB)
  990.     SI:DI = size in bytes
  991. Return: CF clear if successful
  992.         BX:CX = linear address which maps the requested physical memory
  993.     CF set on error
  994.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #03143)
  995. Notes:    implementations may refuse this call because it can circumvent protects
  996.     the caller must build an appropriate selector for the memory
  997.     do not use for memory mapped in the first megabyte
  998. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  999. --------E-310801-----------------------------
  1000. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  1001.     AX = 0801h
  1002.     BX:CX = linear address returned by AX=0800h
  1003. Return: CF clear if successful
  1004.     CF set on error
  1005.         AX = error code (8025h) (see #03143)
  1006. Note:    should be called at end of access to device mapped with AX=0800h
  1007. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1008. --------E-310900-----------------------------
  1009. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1010.     AX = 0900h
  1011. Return: CF clear
  1012.     virtual interrupts disabled
  1013.     AL = previous interrupt state (00h disabled, 01h enabled)
  1014.     AH preserved
  1015. Notes:    the previous state may be restored simply by executing another INT 31
  1016.     a CLI instruction may be used if the previous state is unimportant,
  1017.       but should be assumed to be very slow due to trapping by the host
  1018. SeeAlso: AX=0901h,AX=0902h
  1019. --------E-310901-----------------------------
  1020. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1021.     AX = 0901h
  1022. Return: CF clear
  1023.     virtual interrupts enabled
  1024.     AL = previous interrupt state (00h disabled, 01h enabled)
  1025.     AH preserved
  1026. Notes:    the previous state may be restored simply by executing another INT 31
  1027.     a STI instruction may be used if the previous state is unimportant,
  1028.       but should be assumed to be very slow due to trapping by the host
  1029. SeeAlso: AX=0900h,AX=0902h
  1030. --------E-310902-----------------------------
  1031. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1032.     AX = 0902h
  1033. Return: CF clear
  1034.     AL = current interrupt state (00h disabled, 01h enabled)
  1035. Note:    should be used rather than PUSHF because that instruction yields the
  1036.       physical interrupt state rather than the per-client virtualized
  1037.       interrupt flag
  1038. SeeAlso: AX=0900h,AX=0901h
  1039. --------E-310A00-----------------------------
  1040. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1041.     AX = 0A00h
  1042.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1043. Return: CF clear if successful
  1044.         ES:(E)DI -> FAR extended API entry point
  1045.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1046.     CF set on error
  1047.         AX = error code (DPMI 1.0+) (8001h) (see #03143)
  1048. Notes:    extended API parameters are vendor-specific
  1049.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1050.       INT 2F/AX=168Ah instead
  1051.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1052.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1053.       386MAX v7.01.
  1054. SeeAlso: INT 2F/AX=168Ah
  1055. --------E-310B00-----------------------------
  1056. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1057.     AX = 0B00h
  1058.     BX:CX = linear address
  1059.     DL = size (1,2,4 bytes)
  1060.     DH = type (00h execute, 01h write, 02h read/write)
  1061. Return: CF clear if successful
  1062.         BX = watchpoint handle
  1063.     CF set on error
  1064.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #03143)
  1065. SeeAlso: AX=0212h,AX=0601h
  1066. --------E-310B01-----------------------------
  1067. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1068.     AX = 0B01h
  1069.     BX = watchpoint handle
  1070. Return: CF clear if successful
  1071.     CF set on error
  1072.         AX = error code (DPMI 1.0+) (8023h) (see #03143)
  1073. Note:    the watchpoint handle is freed
  1074. SeeAlso: AX=0B00h
  1075. --------E-310B02-----------------------------
  1076. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1077.     AX = 0B02h
  1078.     BX = watchpoint handle
  1079. Return: CF clear if successful
  1080.         AX = status flags
  1081.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1082.     CF set on error
  1083.         AX = error code (DPMI 1.0+) (8023h) (see #03143)
  1084. SeeAlso: AX=0B00h,AX=0B03h
  1085. --------E-310B03-----------------------------
  1086. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1087.     AX = 0B03h
  1088.     BX = watchpoint handle
  1089. Return: CF clear if successful
  1090.     CF set on error
  1091.         AX = error code (DPMI 1.0+) (8023h) (see #03143)
  1092. SeeAlso: AX=0B02h
  1093. --------E-310C00-----------------------------
  1094. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1095.     AX = 0C00h
  1096.     ES:(E)DI -> resident service provider structure (see #03158)
  1097. Return: CF clear if successful
  1098.     CF set on error
  1099.         AX = error code (8015h,8021h,8025h) (see #03143 at AX=0000h)
  1100. Note:    calling this function declares an intent to provide resident
  1101.       protected mode services after terminating with AX=0C01h
  1102. SeeAlso: AX=0303h,AX=0C01h
  1103.  
  1104. Format of DPMI resident service provider structure:
  1105. Offset    Size    Description    (Table 03158)
  1106.  00h    QWORD    descriptor for 16-bit data segment
  1107.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1108.  10h    WORD    offset of 16-bit callback procedure
  1109.  12h  2 BYTEs    reserved
  1110.  14h    QWORD    descriptor for 32-bit data segment
  1111.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1112.  24h    DWORD    offset of 32-bit callback procedure
  1113. --------E-310C01-----------------------------
  1114. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1115.     AX = 0C01h
  1116.     BL = return code
  1117.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1118. Return: never
  1119. Notes:    should only be used if the program will only provide services to
  1120.       other DPMI programs
  1121.     any protected mode memory remains allocated to the program unless
  1122.       explicitly freed before this call
  1123.     must first call AX=0C00h or program will simply be terminated
  1124. SeeAlso: AX=0C00h,INT 21/AH=31h
  1125. --------E-310D00-----------------------------
  1126. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1127.     AX = 0D00h
  1128.     ES:(E)DI -> shared memory allocation request structure (see #03159)
  1129. Return: CF clear if successful
  1130.         request structure updated
  1131.     CF set on error
  1132.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #03143)
  1133. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1134.       first allocation
  1135. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1136.  
  1137. Format of DPMI shared memory allocation request structure:
  1138. Offset    Size    Description    (Table 03159)
  1139.  00h    DWORD    requested length of shared memory block in bytes
  1140.  04h    DWORD    (ret) allocated length of block
  1141.  08h    DWORD    (ret) shared memory handle
  1142.  0Ch    DWORD    (ret) linear address of memory block
  1143.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1144.         (name max 128 bytes)
  1145.  16h  2 BYTEs    reserved
  1146.  18h  4 BYTEs    reserved (00h)
  1147. --------E-310D01-----------------------------
  1148. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1149.     AX = 0D01h
  1150.     SI:DI = shared memory block handle
  1151. Return: CF clear if successful
  1152.     CF set on error
  1153.         AX = error code (8023h) (see #03143)
  1154. Notes:    handle becomes invalid after this call
  1155.     DPMI maintains separate global and virtual machine use counts for each
  1156.       shared memory block; when the global use counts reaches zero, the
  1157.       block is finally destroyed
  1158. SeeAlso: AX=0502h,AX=0D00h
  1159. --------E-310D02-----------------------------
  1160. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1161.     AX = 0D02h
  1162.     SI:DI = shared memory block handle
  1163.     DX = flags
  1164.         bit 0: return immediately rather than suspending if serialization
  1165.           unavailable
  1166.         bit 1: shared rather than exclusive serialization
  1167.         bits 2-15 reserved (0)
  1168. Return: CF clear if successful
  1169.     CF set on error
  1170.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #03143)
  1171. Notes:    an exclusive serialization blocks any other serialization attempts for
  1172.       the same block by another virtual machine; a shared serialization
  1173.       blocks attempts at exclusive serialization by another virtual machine
  1174.     hosts are not required to detect deadlock
  1175.     a client's interrupt handler can cancel a serialization call which
  1176.       caused it to block by calling AX=0D03h
  1177. SeeAlso: AX=0D00h,AX=0D03h
  1178. --------E-310D03-----------------------------
  1179. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1180.     AX = 0D03h
  1181.     SI:DI = shared memory block handle
  1182.     DX = flags
  1183.         bit 0: release shared serialization rather than exclusive serialztn
  1184.         bit 1: free pending serialization
  1185.         bits 2-15 reserved (0)
  1186. Return: CF clear if successful
  1187.     CF set on error
  1188.         AX = error code (8002h,8023h) (see #03143 at AX=0000h)
  1189. SeeAlso: AX=0D00h,AX=0D02h
  1190. --------E-310E00-----------------------------
  1191. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1192.     AX = 0E00h
  1193. Return: CF clear
  1194.     AX = coprocessor status (see #03160)
  1195. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1196. SeeAlso: AX=0E01h
  1197.  
  1198. Bitfields for DPMI coprocessor status:
  1199. Bit(s)    Description    (Table 03160)
  1200.  0    numeric coprocessor enabled for current client
  1201.  1    client is emulating coprocessor
  1202.  2    numeric coprocessor is present
  1203.  3    host is emulating coprocessor instructions
  1204.  4-7    coprocessor type
  1205.     0000 none
  1206.     0010 80287
  1207.     0011 80387
  1208.     0100 80486 with numeric coprocessor
  1209.     other reserved
  1210.  8-15    not used
  1211. --------E-310E01-----------------------------
  1212. INT 31 P - DPMI 1.0+ - SET EMULATION
  1213.     AX = 0E01h
  1214.     BX = coprocessor flag bits (see #03161)
  1215. Return: CF clear if successful
  1216.     CF set on error
  1217.         AX = error code (8026h) (see #03143 at AX=0000h)
  1218. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1219. SeeAlso: AX=0E00h
  1220.  
  1221. Bitfields for DPMI coprocessor flags:
  1222. Bit(s)    Description    (Table 03161)
  1223.  0    enable numeric coprocessor for current client
  1224.  1    client will emulate coprocessor
  1225.  2-15    not used
  1226. --------E-3157-------------------------------
  1227. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1228.     AH = 57h
  1229.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1230.     ???
  1231. Return: ???
  1232. SeeAlso: INT 2C/AX=0000h"Cloaking"
  1233. --------E-315702-----------------------------
  1234. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1235.     AX = 5702h
  1236.     DX = PSP segment of caller
  1237.     STACK: WORD    ???
  1238.            WORD    flags (bit 0 set if 32-bit program)
  1239. Return: as for DPMI mode-switch entry point (see #02718 at INT 2F/AX=1687h)
  1240. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1241. SeeAlso: INT 2F/AX=1687h
  1242. --------E-31EE00------------------------
  1243. INT 31 - DOS32 v3.0+ - GET DOS32 VERSION AND SELECTOR VALUES
  1244.     AX = EE00h
  1245. Return: AL = minor version (BCD)
  1246.     AH = major version (BCD)
  1247.     DL = system type (1=raw DOS, 2=XMS, 4=VCPI, 8=DPMI)
  1248.     BX = selector of 4GB data segment with zero base address
  1249. Program: DOS32 is a 32 bit DOS extender by Adam Seychell.
  1250. SeeAlso: AX=EE02h
  1251. --------E-31EE02------------------------
  1252. INT 31 - DOS32 v3.0+ - GET DOS32 ADDRESS INFORMATION
  1253.     AX = EE02h
  1254. Return: AX = real-mode segment of temporary 8K buffer (v3.1+)
  1255.     EBX = 32bit linear address of the program segment
  1256.     EDX = Total size in bytes of the programs .EXE file after linking.
  1257.     ESI = offset address of PSP
  1258.     EDI = offset address of program environment
  1259.     ECX = offset address of the program's .EXE ASCIZ file name and path
  1260. SeeAlso: AX=EE00h,AX=EE20h
  1261. --------E-31EE10------------------------
  1262. INT 31 - DOS32 v3.2+ - SET UP A DOS32 LOADABLE LIBRARY
  1263.     AX = EE10h
  1264.     EDX -> library ASCIZ path\filename
  1265.     EBX = number of bytes to seek from beginning of file
  1266. Return: CF clear if successful
  1267.         EAX = size of memory block required to store library
  1268.         EBX = size of library file
  1269.     CF set on error
  1270.         AL = error code.
  1271.         01h error opening or reading file
  1272.         02h bad DOS32 library file
  1273. SeeAlso: AX=EE00h,AX=EE11h
  1274. --------E-31EE11------------------------
  1275. INT 31 - DOS32 v3.2+ - LOAD LIBRARY FILE
  1276.     AX = EE11h
  1277.     EDX -> near pointer of memory block to store library
  1278. Return: CF clear if successful
  1279.         EDX = near pointer to the dynamic library public
  1280.     CF set on error
  1281. Note:    must first successfuly call function AX=EE10h before calling this
  1282.       function
  1283. SeeAlso: AX=EE00h,AX=EE10h
  1284. --------E-31EE20------------------------
  1285. INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH RETF STACK FRAME
  1286.     AX = EE20h
  1287.     ESI = offset of the real mode call back function
  1288. Return: CF clear if successful
  1289.         CX:DX = real mode address to call up to the protected mode
  1290.           procedure
  1291.     CF set on error
  1292. SeeAlso: AX=EE00h,AX=EE02h,AX=EE21h
  1293. --------E-31EE21------------------------
  1294. INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH IRET STACK FRAME
  1295.     AX = EE21h
  1296.     ESI = offset of the real mode call back function
  1297. Return: CF clear if successful
  1298.         CX:DX = real mode address to call up to the protected mode
  1299.           procedure
  1300.     CF set on error
  1301. SeeAlso: AX=EE20h
  1302. --------E-31EE30------------------------
  1303. INT 31 - DOS32 v3.0+ - TERMINATE AND STAY RESIDENT
  1304.     AX = EE30h
  1305. SeeAlso: AX=EE21h,AX=EE40h,INT 21/AH=31h
  1306. --------E-31EE40------------------------
  1307. INT 31 - DOS32 v3.0+ - UNDO PREVIOUS MEMORY ALLOCATION or DMA BUFFER
  1308.     AX = EE40h
  1309. Return: CF clear if successful
  1310.     CF set on error
  1311. SeeAlso: AX=EE41h,AX=EE42h
  1312. --------E-31EE41------------------------
  1313. INT 31 - DOS32 v3.0+ - ALLOCATE 16KB DMA BLOCK
  1314.     AX = EE41h
  1315. Return: CF clear if successful
  1316.         EBX -> 16KB DMA block (physical address)
  1317.         EDX -> 16KB DMA block (offset address)
  1318.     CF set on error
  1319. SeeAlso: AX=EE40h,AX=EE42h
  1320. --------E-31EE42------------------------
  1321. INT 31 - DOS32 v3.0+ - ALLOCATE MEMORY BLOCK
  1322.     AX = EE42h
  1323.     EDX = size in bytes
  1324. Return: CF clear if successful
  1325.         EAX = size in bytes
  1326.         EDX -> memory block
  1327.     CF set on error
  1328. Note:    size is rounded off to the next 4KB boundary
  1329. SeeAlso: AX=EE40h,AX=EE41h
  1330. --------E-31FF00-----------------------------
  1331. INT 31 P - CauseWay - "Info" - GET SYSTEM SELECTORS/FLAGS
  1332.     AX = FF00h
  1333. Return: AX = selector for flag address space (base 00000000h, limit 4GB)
  1334.     BX = selector for current PSP segment (limit 0100h)
  1335.     (E)CX = size of DOS transfer buffer (max 64K)
  1336.     DX = real-mode segment address of DOS transfer buffer
  1337.     ES:(E)SI = protected-mode address of DOS transfer buffer
  1338.     EDI = system flags (see #03162)
  1339. Program: CauseWay is a 386 DOS extender by Michael Devore and John Wildsmith
  1340.       for use with Watcom C++ or assembly language programs
  1341. Notes:    the entire transfer buffer can be addressed with a 16-bit offset in
  1342.       protected mode
  1343.     CauseWay always maps selector 0040h to the BIOS data segment at
  1344.       real-mode segment 0040h; when not running under a DPMI host, CauseWay
  1345.       also provides selectors A000h, B000h, and B800h mapped to video
  1346.       memory
  1347. SeeAlso: AX=FF25h
  1348.  
  1349. Bitfields for CauseWay system flags:
  1350. Bit(s)    Description    (Table 03162)
  1351.  0    32-bit code
  1352.  1    virtual memory manage enabled
  1353.  3-2    mode: 00 raw extended memory, 01 VCPI, 10 DPMI
  1354.  4    DPMI available
  1355.  5    VCPI available
  1356.  6    no memory managers
  1357.  7    application descriptor table type: 0 = GDT, 1 = LDT
  1358.  14-8    reserved
  1359.  15    debugging engine present
  1360. --------E-31FF01-----------------------------
  1361. INT 31 P - CauseWay - "IntXX" - SIMULATE REAL-MODE INTERRUPT
  1362.     AX = FF01h
  1363.     BL = interrupt number
  1364.     ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
  1365. Return: register list updated
  1366. Note:    CauseWay fills in the values for SS, SP, and FLAGS itself, and ignores
  1367.       the values specified for CS and IP
  1368. SeeAlso: AX=0300h,AX=FF02h
  1369. --------E-31FF02-----------------------------
  1370. INT 31 P - CauseWay - "FarCallReal" - SIMULATE REAL-MODE FAR CALL
  1371.     AX = FF02h
  1372.     ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
  1373. Return: register list updated
  1374. SeeAlso: AX=0301h,AX=FF01h
  1375. --------E-31FF03-----------------------------
  1376. INT 31 P - CauseWay - "GetSel" - ALLOCATE NEW SELECTOR
  1377.     AX = FF03h
  1378. Return: CF clear if successful
  1379.         BX = new selector
  1380.     CF set on error
  1381. Note:    the new selector is initialized with a base address of 000000h, a limit
  1382.       of 0000h, and attributes read/write expand-up data
  1383. SeeAlso: AX=FF04h,AX=FF05h,AX=FF06h
  1384. --------E-31FF04-----------------------------
  1385. INT 31 P - CauseWay - "RelSel" - RELEASE A SELECTOR
  1386.     AX = FF04h
  1387.     BX = selector
  1388. Return: CF clear if successful
  1389.     CF set on error
  1390. SeeAlso: AX=FF03h,AX=FF06h
  1391. --------E-31FF05-----------------------------
  1392. INT 31 P - CauseWay - "CodeSel" - CONVERT SELECTOR TO EXECUTABLE CODE SELECTOR
  1393.     AX = FF05h
  1394.     BX = selector
  1395.     CL = default operation size (00h = 16-bit, 01h = 32-bit)
  1396. Return: CF clear if successful
  1397.     CF set on error
  1398. SeeAlso: AX=FF03h
  1399. --------E-31FF06-----------------------------
  1400. INT 31 P - CauseWay - "AliasSel" - CREATE READ/WRITE DATA ALIAS SELECTOR
  1401.     AX = FF06h
  1402.     BX = original selector
  1403. Return: CF clear if successful
  1404.         AX = new data selector aliasing original selector
  1405.     CF set on error
  1406. SeeAlso: AX=FF03h,AX=FF04h
  1407. --------E-31FF07-----------------------------
  1408. INT 31 P - CauseWay - "GetSelDet" - GET SELECTOR BASE AND LIMIT
  1409.     AX = FF07h
  1410.     BX = selector
  1411. Return: CF clear if successful
  1412.         CX:DX = base address
  1413.         SI:DI = limit (bytes)
  1414.     CF set on error
  1415. SeeAlso: AX=FF08h,AX=FF09h
  1416. --------E-31FF08-----------------------------
  1417. INT 31 P - CauseWay - "GetSelDet32" - GET SELECTOR BASE AND LIMIT (32-bit)
  1418.     AX = FF08h
  1419. Return: CF clear if successful
  1420.         EDX = base address
  1421.         ECX = limit (bytes)
  1422.     CF set on error
  1423. SeeAlso: AX=FF07h,AX=FF0Ah
  1424. --------E-31FF09-----------------------------
  1425. INT 31 P - CauseWay - "SetSelDet" - SET SELECTOR BASE AND LIMIT
  1426.     AX = FF09h
  1427.     BX = selector
  1428.     CX:DX = new base address
  1429.     SI:DI = new byte-granular limit
  1430. Return: CF clear if successful
  1431.     CF set on error
  1432. SeeAlso: AX=FF07h,AX=FF0Ah
  1433. --------E-31FF0A-----------------------------
  1434. INT 31 P - CauseWay - "SetSelDet32" - SET SELECTOR BASE AND LIMIT (32-bit)
  1435.     AX = FF0Ah
  1436.     BX = selector
  1437.     EDX = new base address
  1438.     ECX = new byte-granular limit
  1439. Return: CF clear if successful
  1440.     CF set on error
  1441. SeeAlso: AX=FF08h,AX=FF09h
  1442. --------E-31FF0B-----------------------------
  1443. INT 31 P - CauseWay - "GetMem" - ALLOCATE BLOCK OF MEMORY
  1444.     AX = FF0Bh
  1445.     CX:DX = size in bytes (FFFFh:FFFFh to get size of largest available)
  1446. Return: CF clear if successful
  1447.         BX = selector for accessing block if requested size not FFFFh:FFFFh
  1448.         CX:DX = size of largest available block if requested FFFFh:FFFFh
  1449.     CF set on error
  1450. SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF0Fh,AX=FF10h,AX=FF2Ch
  1451. --------E-31FF0C-----------------------------
  1452. INT 31 P - CauseWay - "GetMem32" - ALLOCATE BLOCK OF MEMORY (32-bit)
  1453.     AX = FF0Ch
  1454.     ECX = size in bytes (FFFFFFFFh to get size of largest available block)
  1455. Return: CF clear if successful
  1456.         BX = selector for accessing block if requested size not FFFFh:FFFFh
  1457.         ECX = size of largest available block if requested FFFFh:FFFFh
  1458.     CF set on error
  1459. SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF0Fh,AX=FF11h
  1460. --------E-31FF0D-----------------------------
  1461. INT 31 P - CauseWay - "ResMem" - RESIZE MEMORY BLOCK
  1462.     AX = FF0Dh
  1463.     BX = selector for block to be resized
  1464.     CX:DX = new size in bytes
  1465. Return: CF clear if successful
  1466.     CF set on error
  1467. Note:    the memory block may have to be copied to another location in order
  1468.       to satisfy the requested new size, in which case the base address
  1469.       of the selector is updated
  1470. SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF12h
  1471. --------E-31FF0E-----------------------------
  1472. INT 31 P - CauseWay - "ResMem32" - RESIZE MEMORY BLOCK (32-bit)
  1473.     AX = FF0Eh
  1474.     BX = selector for block to be resized
  1475.     ECX = new size in bytes
  1476. Return: CF clear if successful
  1477.     CF set on error
  1478. Note:    the memory block may have to be copied to another location in order
  1479.       to satisfy the requested new size, in which case the base address
  1480.       of the selector is updated
  1481. SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF13h
  1482. --------E-31FF0F-----------------------------
  1483. INT 31 P - CauseWay - "RelMem" - RELEASE PREVIOUSLY ALLOCATED MEMORY
  1484.     AX = FF0Fh
  1485.     BX = selector for block to be released
  1486. Return: CF clear if successful
  1487.     CF set on error
  1488. SeeAlso: AX=FF0Bh,AX=FF0Ch,AX=FF14h
  1489. --------E-31FF10-----------------------------
  1490. INT 31 P - CauseWay - "GetMemLinear" - ALLOCATE MEMORY WITHOUT SELECTOR
  1491.     AX = FF10h
  1492.     CX:DX = size of block in bytes
  1493. Return: CF clear if successful
  1494.         SI:DI = linear address of allocated block
  1495.     CF set on error
  1496. Note:    this function may return addresses above 16M
  1497. SeeAlso: AX=FF0Bh,AX=FF11h,AX=FF12h,AX=FF14h
  1498. --------E-31FF11-----------------------------
  1499. INT 31 P - CauseWay - "GetMemLinear32" - ALLOCATE MEMORY WITHOUT SELECTOR
  1500.     AX = FF11h
  1501.     ECX = size of block in bytes
  1502. Return: CF clear if successful
  1503.         ESI = linear address of allocated block
  1504.     CF set on error
  1505. Note:    this function may return addresses above 16M
  1506. SeeAlso: AX=FF0Ch,AX=FF10h,AX=FF13h,AX=FF14h
  1507. --------E-31FF12-----------------------------
  1508. INT 31 P - CauseWay - "ResMemLinear" - RESIZE LINEAR MEMORY BLOCK
  1509.     AX = FF12h
  1510.     CX:DX = new size in bytes
  1511.     SI:DI = linear address of block to be resized
  1512. Return: CF clear if successful
  1513.        SI:DI = new linear address of block
  1514.     CF set on error
  1515. SeeAlso: AX=FF0Dh,AX=FF10h,AX=FF13h
  1516. --------E-31FF13-----------------------------
  1517. INT 31 P - CauseWay - "ResMemLinear32" - RESIZE LINEAR MEMORY BLOCK (32-bit)
  1518.     AX = FF13h
  1519.     ECX = new size in bytes
  1520.     ESI = linear address of block to be resized
  1521. Return: CF clear if successful
  1522.        ESI = new linear address of block
  1523.     CF set on error
  1524. SeeAlso: AX=FF0Eh,AX=FF11h,AX=FF12h
  1525. --------E-31FF14-----------------------------
  1526. INT 31 P - CauseWay - "RelMemLinear" - RELEASE LINEAR MEMORY BLOCK
  1527.     AX = FF14h
  1528.     SI:DI = linear address of block to be released
  1529. Return: CF clear if successful
  1530.     CF set on error
  1531. SeeAlso: AX=FF0Fh,AX=FF10h,AX=FF15h
  1532. --------E-31FF15-----------------------------
  1533. INT 31 P - CauseWay - "RelMemLinear32" - RELEASE LINEAR MEMORY BLOCK (32-bit)
  1534.     AX = FF15h
  1535.     ESI = linear address of block to be released
  1536. Return: CF clear if successful
  1537.     CF set on error
  1538. SeeAlso: AX=FF0Fh,AX=FF11h,AX=FF15h
  1539. --------E-31FF16-----------------------------
  1540. INT 31 P - CauseWay - "GetMemNear" - ALLOCATE APPLICATION-RELATIVE MEMORY
  1541.     AX = FF16h
  1542.     EBX = size in bytes of block to allocate
  1543. Return: CF clear if successful
  1544.        ESI = application-relative linear address of allocated block
  1545.     CF set on error
  1546. SeeAlso: AX=FF17h,AX=FF18h,AX=FF19h
  1547. --------E-31FF17-----------------------------
  1548. INT 31 P - CauseWay - "ResMemNear" - RESIZE APPLICATION-RELATIVE MEMORY BLOCK
  1549.     AX = FF17h
  1550.     EBX = size in bytes of block to allocate
  1551.     ESI = application-relative linear address of block
  1552. Return: CF clear if successful
  1553.         ESI = new application-relative linear address of block
  1554.     CF set on error
  1555. SeeAlso: AX=FF16h,AX=FF18h,AX=FF19h
  1556. --------E-31FF18-----------------------------
  1557. INT 31 P - CauseWay - "RelMemNear" - RELEASE APPLICATION-RELATIVE MEMORY BLOCK
  1558.     AX = FF18h
  1559.     ESI = application-relative linear address of block
  1560. Return: CF clear if successful
  1561.     CF set on error
  1562. SeeAlso: AX=FF16h,AX=FF17h,AX=FF19h
  1563. --------E-31FF19-----------------------------
  1564. INT 31 P - CauseWay - "Linear2Near" - CONVERT LINEAR TO APP-RELATIVE ADDRESS
  1565.     AX = FF19h
  1566.     ESI = linear address
  1567. Return: ESI = application-relative linear address
  1568. SeeAlso: AX=FF1Ah
  1569. --------E-31FF1A-----------------------------
  1570. INT 31 P - CauseWay - "Near2Linear" - CONVERT APP-RELATIVE TO LINEAR ADDRESS
  1571.     AX = FF1Ah
  1572.     ESI = application-relative linear address
  1573. Return: ESI = linear address
  1574. SeeAlso: AX=FF19h
  1575. --------E-31FF1B-----------------------------
  1576. INT 31 P - CauseWay - "LockMem" - LOCK REGION OF MEMORY
  1577.     AX = FF1Bh
  1578.     BX:CX = starting linear address
  1579.     SI:DI = size of region in bytes
  1580. Return: CF clear if successful
  1581.     CF set on error
  1582. Desc:    prevent memory from being swapped out by the virtual memory manager
  1583. Note:    locks are applied on 4K page boundaries, so memory above and below
  1584.       the specified region may be locked as well
  1585. SeeAlso: AX=FF1Ch,AX=FF1Dh
  1586. --------E-31FF1C-----------------------------
  1587. INT 31 P - CauseWay - "LockMem32" - LOCK REGION OF MEMORY (32-bit)
  1588.     AX = FF1Ch
  1589.     ESI = starting linear address
  1590.     ECX = size of region in bytes
  1591. Return: CF clear if successful
  1592.     CF set on error
  1593. Desc:    prevent memory from being swapped out by the virtual memory manager
  1594. Note:    locks are applied on 4K page boundaries, so memory above and below
  1595.       the specified region may be locked as well
  1596. SeeAlso: AX=FF1Bh,AX=FF1Eh,AX=FF1Fh
  1597. --------E-31FF1D-----------------------------
  1598. INT 31 P - CauseWay - "UnLockMem" - UNLOCK REGION OF MEMORY
  1599.     AX = FF1Dh
  1600.     BX:CX = starting linear address
  1601.     SI:DI = size of region in bytes
  1602. Return: CF clear if successful
  1603.     CF set on error
  1604. Desc:    allow memory to be swapped out by the virtual memory manager
  1605. Note:    locks are applied on 4K page boundaries, so memory above and below
  1606.       the specified region may be unlocked as well
  1607. SeeAlso: AX=FF1Bh,AX=FF1Eh
  1608. --------E-31FF1E-----------------------------
  1609. INT 31 P - CauseWay - "UnLockMem32" - UNLOCK REGION OF MEMORY (32-bit)
  1610.     AX = FF1Eh
  1611.     ESI = starting linear address
  1612.     ECX = size of region in bytes
  1613. Return: CF clear if successful
  1614.     CF set on error
  1615. Desc:    allow memory to be swapped out by the virtual memory manager
  1616. Note:    locks are applied on 4K page boundaries, so memory above and below
  1617.       the specified region may be unlocked as well
  1618. SeeAlso: AX=FF1Ch,AX=FF1Dh,AX=FF20h
  1619. --------E-31FF1F-----------------------------
  1620. INT 31 P - CauseWay - "LockMemNear" - LOCK APPLICATION-RELATIVE MEMORY REGION
  1621.     AX = FF1Fh
  1622.     ESI = starting application-relative linear address
  1623.     EBX = size of region in bytes
  1624. Return: CF clear if successful
  1625.     CF set on error
  1626. Desc:    prevent memory from being swapped out by the virtual memory manager
  1627. Note:    locks are applied on 4K page boundaries, so memory above and below
  1628.       the specified region may be locked as well
  1629. SeeAlso: AX=FF1Ch,AX=FF20h
  1630. --------E-31FF20-----------------------------
  1631. INT 31 P - CauseWay - "UnLockMemNear" - UNLOCK APP-RELATIVE MEMORY REGION
  1632.     AX = FF20h
  1633.     ESI = starting application-relative linear address
  1634.     ECX = size of region in bytes
  1635. Return: CF clear if successful
  1636.     CF set on error
  1637. Desc:    allow memory to be swapped out by the virtual memory manager
  1638. Note:    locks are applied on 4K page boundaries, so memory above and below
  1639.       the specified region may be unlocked as well
  1640. SeeAlso: AX=FF1Eh,AX=FF1Fh
  1641. --------E-31FF21-----------------------------
  1642. INT 31 P - CauseWay - "GetMemDOS" - ALLOCATE CONVENTIONAL MEMORY
  1643.     AX = FF21h
  1644.     BX = number of paragraphs to allocate
  1645. Return: CF clear if successful
  1646.         AX = real-mode segment of allocated block
  1647.         DX = initial selector for block
  1648.     CF set on error
  1649.         AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1650.         BX = size of largest available block
  1651. Note:    if the requested size is greater than 64K, contiguous selectors will
  1652.       be allocated, one for each 64K; for 32-bit applications, the first
  1653.       selector's limit will be set to the size of the entire block, while
  1654.       that selector will have a limit of 64K for 16-bit applications.  All
  1655.       selectors after the first one have a limit of 64K except the final
  1656.       one
  1657. SeeAlso: AX=FF22h,AX=FF23h,INT 21/AH=48h
  1658. --------E-31FF22-----------------------------
  1659. INT 31 P - CauseWay - "ResMemDOS" - RESIZE CONVENTIONAL MEMORY BLOCK
  1660.     AX = FF22h
  1661.     BX = new size in paragraphs
  1662.     DX = initial selector for block
  1663. Return: CF clear if successful
  1664.     CF set on error
  1665.         AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1666.         BX = maximum number of paragraphs available
  1667. Note:    this function will also fail if the block is expanded past a 64K
  1668.       boundary and the next selector is already in use
  1669. SeeAlso: AX=FF21h,AX=FF23h,INT 21/AH=49h
  1670. --------E-31FF23-----------------------------
  1671. INT 31 P - CauseWay - "RelMemDOS" - RELEASE CONVENTIONAL MEMORY BLOCK
  1672.     AX = FF23h
  1673.     DX = initial selector for block
  1674. Return: CF clear if successful
  1675.     CF set on error
  1676.         AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
  1677. Note:    all descriptors allocated for the block are freed
  1678. SeeAlso: AX=FF21h,AX=FF22h,INT 21/AH=4Ah
  1679. --------E-31FF24-----------------------------
  1680. INT 31 P - CauseWay - "ExecOverlay" - LOAD AND OPTIONALLY EXECUTE APP CODE
  1681.     AX = FF24h
  1682.     EBX = flags
  1683.         bit 0: don't execute (overlay only)
  1684.         bit 1: don't preserve relocation information
  1685.     ES:EDX -> filename (see also #03163)
  1686.     FS:ESI -> commandline (ESI = 00000000h if no commandline)
  1687.     GS:EDI -> name (CW's /o option)
  1688. Return: CF clear if successful
  1689.         ---EBX bit 0 set---
  1690.         CX:EDX = program entry point (CS:EIP)
  1691.         SI = segment of PSP
  1692.         ---EBX bit 1 set---
  1693.         BX:EAX = initial SS:ESP
  1694.         EDI high word = base segment
  1695.         EDI low word = number of segments
  1696.         EBP = start of segment definitions
  1697.     CF set on error
  1698.         AX = error code
  1699.         0001h DOS file access error
  1700.         0002h not a CuaseWay 3P file
  1701.         0003h not enough memory
  1702. SeeAlso: AX=FF2Ah,INT 21/AH=4Bh
  1703.  
  1704. Format of CauseWay executable:
  1705. Offset    Size    Description    (Table 03163)
  1706.  00h  2 BYTEs    signature "3P"
  1707.  02h    DWORD    size of header data in bytes
  1708.  06h    DWORD    size of EXE image data in bytes
  1709.  0Ah    DWORD    number of bytes of program memory required
  1710.  0Eh    WORD    number of segment definitions (see #03165)
  1711.  10h    DWORD    number of relocation table entries
  1712.  14h    DWORD    offset of program entry point
  1713.  18h    WORD    segment list entry number for entry point's CS
  1714.  1Ah    DWORD    initial ESP
  1715.  1Eh    WORD    segment list entry number for initial SS
  1716.  20h    DWORD    control flags (see #03164)
  1717.  24h    DWORD    automatic stack size in bytes if ESP entry = 00000000h
  1718.  28h    BYTE    length of name (name follows program image)
  1719.  29h 23 BYTEs    reserved
  1720. SeeAlso: #01594,#01609 at INT 21/AH=4Bh
  1721.  
  1722. Bitfields for CauseWay executable control flags:
  1723. Bit(s)    Description    (Table 03164)
  1724.  0    16-bit interrupt stack frame
  1725.  7    descriptor table type (0 = GDT, 1 = LDT)
  1726.  14    16-bit default data size
  1727.  31    compressed EXE image
  1728. Note:    bits 0 and 14 should always be equal
  1729. SeeAlso: #03163
  1730.  
  1731. Format of CauseWay segment definition [array]:
  1732. Offset    Size    Description    (Table 03165)
  1733.  00h    DWORD    start offset within program image
  1734.  04h    DWORD    length and type
  1735.         bits 0-19: length
  1736.         bit 20:       granularity (if set, length is in 4K pages)
  1737.         bits 21-24: type
  1738.             0000 code
  1739.             0001 read/write data
  1740.             0010 stack
  1741.             0011 read-only data
  1742.         bit 25: force segment descriptor's D bit to 0
  1743.         bit 26: force segmetn descriptor's D bit to 1
  1744. SeeAlso: #03163
  1745. --------E-31FF25-----------------------------
  1746. INT 31 P - CauseWay - "GetDOSTrans" - GET DOS TRANSFER BUFFER
  1747.     AX = FF25h
  1748. Return: BX = real-mode segment of transfer buffer
  1749.     ECX = transfer buffer size
  1750.     DX = protected-mode selector for transfer buffer
  1751. Note:    the default buffer size of 8K is sufficient for most applications,
  1752.       but an application performing large amounts of file I/O may benefit
  1753.       from allocating its own, larger buffer
  1754. SeeAlso: AX=FF00h,AX=FF26h
  1755. --------E-31FF26-----------------------------
  1756. INT 31 P - CauseWay - "SetDOSTrans" - SET DOS TRANSFER BUFFER
  1757.     AX = FF26h
  1758.     BX = real-mode segment of new transfer buffer
  1759.     ECX = new transfer buffer size
  1760.     DX = protected-mode selector for new transfer buffer
  1761. Return: nothing
  1762. Note:    the specific buffer must be located in conventional memory; only the
  1763.       first 64K will be used
  1764. SeeAlso: AX=FF25h
  1765. --------E-31FF27-----------------------------
  1766. INT 31 P - CauseWay v1.3 - "GetMCBSize" - GET CURRENT MCB ALLOCATION BLOCK SIZE
  1767.     AX = FF27h
  1768. Return: ECX = current threshold
  1769. Desc:    determine the memory allocation size below which CauseWay will use
  1770.       internal MCB chains rather than allocating full 4K pages via DPMI
  1771. SeeAlso: AX=FF00h,AX=FF28h
  1772. --------E-31FF28-----------------------------
  1773. INT 31 P - CauseWay v1.3 - "SetMCBSize" - SET MCB MEMORY ALLOCATION BLOCK SIZE
  1774.     AX = FF28h
  1775.     ECX = new threshold (0000000h to disable MCB memory allocation system)
  1776. Return: CF clear if successful
  1777.         threshold unchanged (default 16K)
  1778.     CF set on error (threshold > 64K)
  1779. Desc:    specify the memory allocation size below which CauseWay will use
  1780.       internal MCB chains rather than allocating full 4K pages via DPMI
  1781. Note:    the specified threshold will be rounded up to the next higher multiple
  1782.       of 4K
  1783. SeeAlso: AX=FF00h,AX=FF27h
  1784. --------E-31FF29-----------------------------
  1785. INT 31 P - CauseWay v1.3 - "GetSels" - ALLOCATE MULTIPLE SELECTORS
  1786.     AX = FF29h
  1787.     CX = number of selectors to allocate
  1788. Return: BX = base selector
  1789. Desc:    allocate multiple contiguous selectors, initializing each to have a
  1790.       base address and limit of zero
  1791. SeeAlso: AX=FF00h,AX=FF04h
  1792. --------E-31FF2A-----------------------------
  1793. INT 31 P - CauseWay v1.3 - "cwLoad" - LOAD ANOTHER CAUSEWAY PROGRAM AS OVERLAY
  1794.     AX = FF2Ah
  1795.     DS:EDX -> filename
  1796. Return: CF clear if successful
  1797.         CX:EDX = CS:EIP of entry point
  1798.         BX:EAX = initial SS:ESP for program
  1799.         SI = PSP for overlay program
  1800.     CF set on error
  1801.         AX = error code (01h file error, 02h not a 3P file, 03h no memory)
  1802. Note:    the returned PSP can be given to "RelMem" (AX=FF0Fh) to release the
  1803.       overlay's memory and selectors; only selectors and memory allocated
  1804.       during loading will be freed by RelMem unless one switches PSPs with
  1805.       INT 21/AH=50h
  1806. SeeAlso: AX=FF00h,AX=FF24h
  1807. --------E-31FF2B-----------------------------
  1808. INT 31 P - CauseWay v1.3 - "cwcInfo" - VALIDATE AND GET SIZE OF CWC FILE
  1809.     AX = FF2Bh
  1810.     BX = file handle for CWC-compressed file
  1811. Return: CF clear if successful
  1812.         ECX = expanded file size
  1813.     CF set on error (not a CWC-compressed file)
  1814. SeeAlso: AX=FF00h,AX=FFFBh
  1815. --------E-31FF2C-----------------------------
  1816. INT 31 P - CauseWay v1.3 - "GetMemSO" - ALLOCATE MEMORY AND RETURN SEL:OFFSET
  1817.     AX = FF2Ch
  1818.     CX:DX = block size in bytes
  1819. Return: CF clear if successful
  1820.        SI:DI = selector:offset of allocated memory
  1821.     CF set on error
  1822. Note:    unlike "GetMem" (AX=FF0Bh), this function will reuse selectors until a
  1823.       segment is full, rather than allocating a new selector for each
  1824.       memory block
  1825. SeeAlso: AX=FF00h,AX=FF2Dh,AX=FF2Eh
  1826. --------E-31FF2D-----------------------------
  1827. INT 31 P - CauseWay v1.3 - "ResMemSO" - RESIZE SELECTOR:OFFSET MEMORY BLOCK
  1828.     AX = FF2Dh
  1829.     SI:DI = selector:offset for memory block
  1830.     CX:DX = new size of block
  1831. Return: CF clear if successful
  1832.        SI:DI = new selector:offset for memory block
  1833.     CF set on error
  1834. SeeAlso: AX=FF00h,AX=FF2Ch,AX=FF2Eh
  1835. --------E-31FF2E-----------------------------
  1836. INT 31 P - CauseWay v1.3 - "RelMemSO" - RELEASE SELECTOR:OFFSET MEMORY BLOCK
  1837.     AX = FF2Eh
  1838.     SI:DI = selector:offset for memory block
  1839. SeeAlso: AX=FF00h
  1840. --------E-31FFFB-----------------------------
  1841. INT 31 P - Causeway v1.3 - "cwcLoad" - LOAD/EXPAND CWC-COMPRESSED FILE
  1842.     AX = FFFBh
  1843.     BX = source file handle
  1844.     ES:EDI -> memory buffer into which to expand file
  1845. Return: CF clear if successful
  1846.         ECX = expanded data length
  1847.     CF set on error
  1848.         EAX = error code (01h file error, 02h bad data, 03h not CWC file)
  1849. Note:    the provided file may consist of the concatenation of several CWC
  1850.       files; the one beginning at the current file position will be
  1851.       expanded
  1852. SeeAlso: AX=FF2Bh
  1853. --------v-32---------------------------------
  1854. INT 32 - VIRUS - "Tiny" Viruses - ORIGINAL INT 21h VECTOR
  1855. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1856. --------v-32---------------------------------
  1857. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1858. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1859. --------y-326E-------------------------------
  1860. INT 32 - NOISE.SYS 0.53 - API
  1861.     AH = 6Eh (function ID)
  1862.     AL = subfunction (see INT 32/AX=6E00h)
  1863. Return: CF set on error
  1864.         AL = error code (see #03166)
  1865.     CF clear if successful
  1866. Notes:    INT 32 is only a proposed interface for NOISE.SYS. Use the IOCTL READ
  1867.       from the RANDOM device to determine the interrupt and function ID
  1868.       used by the driver, since future versions may use the Alternate
  1869.       Multiplex Interrupt (AMIS) at INT 2Dh.
  1870.     the beta v0.51 had a substantially different API on INT 32/AH=6Eh
  1871.  
  1872. (Table 03166)
  1873. Values for NOISE.SYS error codes:
  1874.  00h    subfunction not supported
  1875.  FBh    random pool is empty
  1876.  FCh    quality of sample is too low
  1877.  FDh    too many processes using the API or driver
  1878.  FEh    subfunction is disabled in the current build
  1879.  FFh    successful
  1880. --------y-326E00-----------------------------
  1881. INT 32 - NOISE.SYS v0.53+ - INSTALLATION CHECK
  1882.     AX = 6E00h
  1883. Return: AL = installation status
  1884.         00h not installed
  1885.         FFh installed
  1886.         CX = version (ie, 0123h = Version 1.2.3)
  1887.         DX:DI -> signature string
  1888. --------y-326E01-----------------------------
  1889. INT 32 - NOISE.SYS v0.53+ - GET ENTRY POINT
  1890.     AX = 6E01h
  1891. Return: AL = FFh
  1892.     DX:DI -> far call hook
  1893. ----------326E04-----------------------------
  1894. INT 32 - NOISE.SYS v0.55+ - GET INTERRUPT HOOK LIST
  1895.     AX = 6E04h
  1896. Return: AL = status
  1897.         00h = unimplemented
  1898.         04h = DX:BX -> interrupt hook list
  1899.         FEh = subfunction disabled
  1900. Note:    the hook list array ends with API interrupt (usually 32h, although
  1901.       it will differ if the API is installed at another interrupt)
  1902. ----------326E06-----------------------------
  1903. INT 32 - NOISE.SYS v0.55+ - GET DEVICE DRIVER HEADER
  1904.     AX = 6E06h
  1905. Return: AL = number of device drivers in NOISE.SYS chain
  1906.         02h = default (for RANDOM and URANDOM devices)
  1907.     AH = AMIS device driver flags (set to 00h for now)
  1908.     DX:BX -> first device in chain (see #01646)
  1909. SeeAlso: INT 2D/AL=06h
  1910. --------y-326E10-----------------------------
  1911. INT 32 - NOISE.SYS v0.53+ - STATUS CHECK
  1912.     AX = 6E10h
  1913. Return: CF set on error
  1914.         AL = error code (FDh) (see #03166)
  1915.     CF clear if successful
  1916.         AL = status
  1917.         FFh successful
  1918.         BH = number of processes using the API
  1919.         CX = number of random bytes waiting
  1920.         DX = maximum possible bytes waiting
  1921.         (if CX=DX, the pool is full)
  1922. Note:    this subfunction is a convenient way to check the driver if any
  1923.       fresh bytes are waiting in the output pool.
  1924. SeeAlso: INT 32/AH=6Eh,AX=6E00h,AX=6E11h
  1925. --------y-326E11-----------------------------
  1926. INT 32 - NOISE.SYS v0.53+ - GET ENTROPY ESTIMATE
  1927.     AX = 6E11h
  1928. Return: CF set on error
  1929.         AL = error code (00h,FDh,FEh) (see #03166)
  1930.     CF clear if successful
  1931.         EBX = estimated bit count (refer to note below)
  1932.         CL = FRACBITS (number of fractional bits)
  1933.         EDX = low 32-bits of total number of samples added
  1934. Note:  the estimated number of fresh random bits is equal to
  1935.       (EAX >> FRACBITS) + ((EAX & ((1 << FRACBITS)-1) / (1 << FRACBITS))
  1936. SeeAlso: AH=6Eh,AX=6E00h
  1937. --------y-326E12-----------------------------
  1938. INT 32 - NOISE.SYS v0.53+ - ADD SAMPLE FROM FAST TIMER
  1939.     AX = 6E12h
  1940. Return: CF set on error
  1941.         AL = error code (FCh,FDh,FEh) (see #03166)
  1942.     CF clear if successful
  1943.         CX = number of random bytes waiting
  1944. Note:    subfunctions 12h and 13h are meant for applications or devices
  1945.       which are able to gather entropy from other sources which are
  1946.       not polled by NOISE.SYS (for example, a communications driver
  1947.       could use this call to sample packet arrival times).
  1948. SeeAlso: AX=6E00h,AX=6E10h,AX=6E13h
  1949. --------y-326E13-----------------------------
  1950. INT 32 - NOISE.SYS v0.53+ - ADD 16-BIT SAMPLE TO RANDOM POOL
  1951.     AX = 6E13h
  1952.     DX = sample
  1953. Return: CF set on error
  1954.         AL = error code (FCh,FEh) (see #03166)
  1955.     CF clear if successful
  1956.         CX = number of random bytes waiting
  1957. SeeAlso: AX=6E00h,AX=6E11h
  1958. --------y-326E14-----------------------------
  1959. INT 32 - NOISE.SYS v0.53+ - GET FLAGS
  1960.     AX = 6E14h
  1961. Return: BX = flags (see #03167)
  1962.     CX = mask of settable flags in BX
  1963. SeeAlso: AX=6E00h,AX=6E15h
  1964.  
  1965. Bitfields for NOISE.SYS flags:
  1966. Bit(s)    Description    (Table 03167)
  1967.  0    MS Windows active
  1968.  1-5    reserved
  1969.  6    clock drift sampling
  1970.  7    video retrace drift sampling
  1971.  8    network access sampling (not implemented yet in 0.53)
  1972.  9    CD-ROM access sampling (not implemented yet in 0.53)
  1973.  10    DOS spinner
  1974.  11    DOS process start/end and miscellaneous process activity sampling
  1975.  12    mouse movement/button sampling
  1976.  13    disk sampling (INT 13)
  1977.  14    keystroke timings
  1978.  15    reserved for hardware RNG
  1979. --------y-326E15-----------------------------
  1980. INT 32 - NOISE.SYS v0.53+ - SET FLAGS
  1981.     AX = 6E15h
  1982.     BX = flags (see #03167)
  1983. Return: BX = new flags
  1984. Note:    flags which AX=6E14h indicates are not settable should be masked off
  1985.       by ANDing with the CX returned by AX=6E14h
  1986. SeeAlso: AX=6E00h,AX=6E14h
  1987. --------y-326E16-----------------------------
  1988. INT 32 - NOISE.SYS v0.53+ - READ URANDOM BYTES
  1989.     AX = 6E16h
  1990.     CX = number of bytes
  1991.     ES:DI -> buffer
  1992. Return: CF set on error
  1993.         AL = error code (FDh,FEh) (see #03166)
  1994.     CF clear if successful
  1995.         CX = number of random bytes read
  1996. SeeAlso: AX=6E00h,AX=6E12h,AX=6E17h
  1997. --------y-326E17-----------------------------
  1998. INT 32 - NOISE.SYS v0.53+ - READ RANDOM BYTES
  1999.     AX = 6E17h
  2000.     CX = number of bytes
  2001.     ES:DI -> buffer
  2002. Return: CF set on error
  2003.         AL = error code (FBh,FDh,FEh) (see #03166)
  2004.     CF clear if successful
  2005.         CX = number of random bytes read
  2006. SeeAlso: AX=6E00h,AX=6E16h
  2007. ----------326E18-----------------------------
  2008. INT 32 - NOISE.SYS v0.6+ - READ CONTROL RECORD
  2009.     AX = 6E18h
  2010.     CX = buffer size
  2011.     ES:DI -> buffer
  2012. Return: AL = status
  2013.         00h unimplemented (before v0.6)
  2014.         FEh subfunction is disabled
  2015.         FFh successful
  2016.         CX = number of bytes read
  2017. Note:    the control record corresponds to the IOCTL Read record for the RANDOM
  2018.       device
  2019. ----------326E-------------------------------
  2020. INT 32 - NOISE.SYS - RESERVED FOR FUTURE USE
  2021.     AH = 6Eh
  2022.     AL = 19h to 3Fh
  2023. Return: AL = 00h
  2024. Note:    these functions are reserved for future use; user additions to the
  2025.       the driver should use subfunctions 40h to FFh.
  2026. --------M-330000-----------------------------
  2027. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  2028.     AX = 0000h
  2029. Return: AX = status
  2030.         0000h hardware/driver not installed
  2031.         FFFFh hardware/driver installed
  2032.     BX = number of buttons
  2033.         0000h other than two
  2034.         0002h two buttons (many drivers)
  2035.         0003h Mouse Systems/Logitech three-button mouse
  2036.         FFFFh two buttons
  2037. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  2038.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  2039.       and then call this function.    Logitech drivers v5.01 and v6.00
  2040.       reportedly do not correctly use Hercules graphics in dual-monitor
  2041.       systems, while version 4.10 does.
  2042.     the Logitech mouse driver contains the signature string "LOGITECH"
  2043.       three bytes past the interrupt handler; many of the Logitech mouse
  2044.       utilities check for this signature.
  2045.     Logitech MouseWare v6.30 reportedly does not support CGA video modes
  2046.       if no CGA is present when it is started and the video board is
  2047.       later switched into CGA emulation
  2048. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  2049. --------M-330001-----------------------------
  2050. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  2051.     AX = 0001h
  2052. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
  2053. --------M-330002-----------------------------
  2054. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  2055.     AX = 0002h
  2056. Note:    multiple calls to hide the cursor will require multiple calls to
  2057.       function 01h to unhide it.
  2058. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  2059. SeeAlso: INT 6F/AH=08h"F_TRACK_OFF"
  2060. --------M-330003-----------------------------
  2061. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  2062.     AX = 0003h
  2063. Return: BX = button status (see #03168)
  2064.     CX = column
  2065.     DX = row
  2066. Note:    in text modes, all coordinates are specified as multiples of the cell
  2067.       size, typically 8x8 pixels
  2068. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  2069.  
  2070. Bitfields for mouse button status:
  2071. Bit(s)    Description    (Table 03168)
  2072.  0    left button pressed if 1
  2073.  1    right button pressed if 1
  2074.  2    middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  2075. --------M-330004-----------------------------
  2076. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  2077.     AX = 0004h
  2078.     CX = column
  2079.     DX = row
  2080. Note:    the row and column are truncated to the next lower multiple of the cell
  2081.       size (typically 8x8 in text modes); however, some versions of the
  2082.       Microsoft documentation incorrectly state that the coordinates are
  2083.       rounded
  2084. SeeAlso: AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
  2085. --------M-330005-----------------------------
  2086. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  2087.     AX = 0005h
  2088.     BX = button number (see #03169)
  2089. Return: AX = button states (see #03168)
  2090.     BX = number of times specified button has been pressed since last call
  2091.     CX = column at time specified button was last pressed
  2092.     DX = row at time specified button was last pressed
  2093. Note:    at least for the Genius mouse driver, the number of button presses
  2094.       returned is limited to 7FFFh
  2095. SeeAlso: AX=0006h,INT 62/AX=007Ch
  2096.  
  2097. (Table 03169)
  2098. Values for mouse button number:
  2099.  0000h    left
  2100.  0001h    right
  2101.  0002h    middle (Mouse Systems/Logitech/Genius mouse)
  2102. --------M-330006-----------------------------
  2103. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  2104.     AX = 0006h
  2105.     BX = button number (see #03169)
  2106. Return: AX = button states (see #03168)
  2107.     BX = number of times specified button has been released since last call
  2108.     CX = column at time specified button was last released
  2109.     DX = row at time specified button was last released
  2110. Note:    at least for the Genius mouse driver, the number of button releases
  2111.       returned is limited to 7FFFh
  2112. SeeAlso: AX=0005h,INT 62/AX=007Ch
  2113. --------M-330007-----------------------------
  2114. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  2115.     AX = 0007h
  2116.     CX = minimum column
  2117.     DX = maximum column
  2118. Note:    in text modes, the minimum and maximum columns are truncated to the
  2119.       next lower multiple of the cell size, typically 8x8 pixels
  2120. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  2121. SeeAlso: INT 6F/AH=0Ch"F_SET_LIMITS_X"
  2122. --------M-330008-----------------------------
  2123. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  2124.     AX = 0008h
  2125.     CX = minimum row
  2126.     DX = maximum row
  2127. Note:    in text modes, the minimum and maximum rows are truncated to the
  2128.       next lower multiple of the cell size, typically 8x8 pixels
  2129. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  2130. SeeAlso: INT 6F/AH=0Eh"F_SET_LIMITS_Y"
  2131. --------M-330009-----------------------------
  2132. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  2133.     AX = 0009h
  2134.     BX = column of cursor hot spot in bitmap (-16 to 16)
  2135.     CX = row of cursor hot spot (-16 to 16)
  2136.     ES:DX -> mask bitmap (see #03170)
  2137. Notes:    in graphics modes, the screen contents around the current mouse cursor
  2138.       position are ANDed with the screen mask and then XORed with the
  2139.       cursor mask
  2140.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  2141.       hot spot row/column should be limited to -128..127
  2142.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  2143.       right-most, but that statement is contradicted by all other available
  2144.       documentation
  2145. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"
  2146.  
  2147. Format of mouse mask bitmap:
  2148. Offset    Size    Description    (Table 03170)
  2149.  00h 16 WORDs    screen mask
  2150.  10h 16 WORDs    cursor mask
  2151. Note:    each word defines the sixteen pixels of a row, low bit rightmost
  2152. --------M-33000A-----------------------------
  2153. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  2154.     AX = 000Ah
  2155.     BX = hardware/software text cursor
  2156.         0000h software
  2157.         CX = screen mask
  2158.         DX = cursor mask
  2159.         0001h hardware
  2160.         CX = start scan line
  2161.         DX = end scan line
  2162. Note:    when the software cursor is selected, the character/attribute data at
  2163.       the current screen position is ANDed with the screen mask and then
  2164.       XORed with the cursor mask
  2165. SeeAlso: AX=0009h,INT 62/AX=007Eh
  2166. --------M-33000B-----------------------------
  2167. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  2168.     AX = 000Bh
  2169. Return: CX = number of mickeys mouse moved horizontally since last call
  2170.     DX = number of mickeys mouse moved vertically
  2171. Notes:    a mickey is the smallest increment the mouse can sense
  2172.     positive values indicate down/right
  2173. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  2174. --------M-33000C-----------------------------
  2175. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  2176.     AX = 000Ch
  2177.     CX = call mask (see #03171)
  2178.     ES:DX -> FAR routine (see #03172)
  2179. SeeAlso: AX=0018h
  2180.  
  2181. Bitfields for mouse call mask:
  2182. Bit(s)    Description    (Table 03171)
  2183.  0    call if mouse moves
  2184.  1    call if left button pressed
  2185.  2    call if left button released
  2186.  3    call if right button pressed
  2187.  4    call if right button released
  2188.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  2189.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  2190.  7-15    unused
  2191. Note:    some versions of the Microsoft documentation incorrectly state that CX
  2192.       bit 0 means call if mouse cursor moves
  2193.  
  2194. (Table 03172)
  2195. Values interrupt routine is called with:
  2196.     AX = condition mask (same bit assignments as call mask)
  2197.     BX = button state
  2198.     CX = cursor column
  2199.     DX = cursor row
  2200.     SI = horizontal mickey count
  2201.     DI = vertical mickey count
  2202. Notes:    some versions of the Microsoft documentation erroneously swap the
  2203.       meanings of SI and DI
  2204.     in text modes, the row and column will be reported as a multiple of
  2205.       the character cell size, typically 8x8 pixels
  2206. --------M-33000D-----------------------------
  2207. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  2208.     AX = 000Dh
  2209. SeeAlso: AX=000Eh,INT 10/AH=04h
  2210. --------M-33000E-----------------------------
  2211. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  2212.     AX = 000Eh
  2213. SeeAlso: AX=000Dh
  2214. --------M-33000F-----------------------------
  2215. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  2216.     AX = 000Fh
  2217.     CX = number of mickeys per 8 pixels horizontally (default 8)
  2218.     DX = number of mickeys per 8 pixels vertically (default 16)
  2219. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  2220. --------M-330010-----------------------------
  2221. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  2222.     AX = 0010h
  2223.     CX,DX = X,Y coordinates of upper left corner
  2224.     SI,DI = X,Y coordinates of lower right corner
  2225. Note:    mouse cursor is hidden in the specified region, and needs to be
  2226.       explicitly turned on again
  2227. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  2228. --------M-330010-----------------------------
  2229. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  2230.     AX = 0010h
  2231.     ES:DX -> update region list (see #03173)
  2232. Notes:    mouse cursor is hidden in the specified region, and needs to be
  2233.       explicitly turned on again
  2234.     this version of the call is described in an August 1988 version of the
  2235.       Genius Mouse programmer's reference; it has been changed to conform
  2236.       to the Microsoft version shown above by version 9.06 (and possibly
  2237.       earlier versions)
  2238. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  2239.  
  2240. Format of Genius Mouse update region list:
  2241. Offset    Size    Description    (Table 03173)
  2242.  00h    WORD    left-most column
  2243.  02h    WORD    top-most row
  2244.  04h    WORD    right-most column
  2245.  06h    WORD    bottom-most row
  2246. --------M-330011-----------------------------
  2247. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  2248.     AX = 0011h
  2249. Return: AX = FFFFh
  2250.     BX = number of buttons
  2251. SeeAlso: AX=0000h
  2252. --------M-330012-----------------------------
  2253. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  2254.     AX = 0012h
  2255.     BH = cursor width in words
  2256.     CH = rows in cursor
  2257.     BL = horizontal hot spot (-16 to 16)
  2258.     CL = vertical hot spot (-16 to 16)
  2259.     ES:DX -> bit map of screen and cursor maps
  2260. Return: AX = FFFFh if successful
  2261. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  2262. --------M-330013-----------------------------
  2263. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  2264.     AX = 0013h
  2265.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  2266. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  2267. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  2268. --------M-330014-----------------------------
  2269. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  2270.     AX = 0014h
  2271.     CX = call mask (see #03171)
  2272.     ES:DX -> FAR routine
  2273. Return: CX = call mask of previous interrupt routine
  2274.     ES:DX = FAR address of previous interrupt routine
  2275. SeeAlso: AX=000Ch,AX=0018h
  2276. --------M-330015-----------------------------
  2277. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  2278.     AX = 0015h
  2279. Return: BX = size of buffer needed to store driver state
  2280. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  2281. --------M-330016-----------------------------
  2282. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  2283.     AX = 0016h
  2284.     BX = size of buffer (see AX=0015h)
  2285.     ES:DX -> buffer for driver state
  2286. Note:    although not documented (since the Microsoft driver does not use it),
  2287.       many drivers appear to require BX on input
  2288. SeeAlso: AX=0015h,AX=0017h
  2289. --------M-330017-----------------------------
  2290. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  2291.     AX = 0017h
  2292.     BX = size of buffer (see AX=0015h)
  2293.     ES:DX -> buffer containing saved state
  2294. Notes:    although not documented (since the Microsoft driver does not use it),
  2295.       many drivers appear to require BX on input
  2296.     some mouse drivers range-check the values in the saved state based on
  2297.       the current video mode; thus, the video mode should be restored
  2298.       before the mouse driver's state is restored
  2299. SeeAlso: AX=0015h,AX=0016h
  2300. --------M-330018-----------------------------
  2301. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  2302.     AX = 0018h
  2303.     CX = call mask (see #03174)
  2304.     ES:DX -> FAR routine to be invoked on mouse events (see #03175)
  2305. Return: AX = status
  2306.         0018h if successful
  2307.         FFFFh on error
  2308. Notes:    up to three handlers can be defined by separate calls to this function,
  2309.       each with a different combination of shift states in the call mask;
  2310.       calling this function again with a call mask of 0000h undefines the
  2311.       specified handler (official documentation); specifying the same
  2312.       call mask and an address of 0000h:0000h undefines the handler (real
  2313.       life)
  2314.     some versions of the documentation erroneously reverse the order of
  2315.       the bits in the call mask
  2316. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  2317.  
  2318. Bitfields for mouse call mask:
  2319. Bit(s)    Description    (Table 03174)
  2320.  0    call if mouse moves
  2321.  1    call if left button pressed
  2322.  2    call if left button released
  2323.  3    call if right button pressed
  2324.  4    call if right button released
  2325.  5    call if shift button pressed during event
  2326.  6    call if ctrl key pressed during event
  2327.  7    call if alt key pressed during event
  2328. Note:    at least one of 5-7 must be set
  2329.  
  2330. (Table 03175)
  2331. Values user handler is called with:
  2332.     AX = condition mask (same bit assignments as call mask)
  2333.     BX = button state
  2334.     CX = cursor column
  2335.     DX = cursor row
  2336.     SI = horizontal mickey count
  2337.     DI = vertical mickey count
  2338. Return: registers preserved
  2339. Note:    in text modes, the row and column will be reported as a multiple of
  2340.       the cell size, typically 8x8 pixels
  2341. --------M-330019-----------------------------
  2342. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  2343.     AX = 0019h
  2344.     CX = call mask (see #03174)
  2345. Return: BX:DX = user interrupt vector
  2346.     CX = call mask (0000h if not found)
  2347. Note:    attempts to find a user event handler (defined by function 18h)
  2348.       whose call mask matches CX
  2349. SeeAlso: AX=0018h
  2350. --------M-33001A-----------------------------
  2351. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  2352.     AX = 001Ah
  2353.     BX = horizontal speed \
  2354.     CX = vertical speed   / (see AX=000Fh)
  2355.     DX = double speed threshold (see AX=0013h)
  2356. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  2357. --------M-33001B-----------------------------
  2358. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  2359.     AX = 001Bh
  2360. Return: BX = horizontal speed
  2361.     CX = vertical speed
  2362.     DX = double speed threshold
  2363. SeeAlso: AX=000Bh,AX=001Ah
  2364. --------M-33001C-----------------------------
  2365. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  2366.     AX = 001Ch
  2367.     BX = rate (see #03176)
  2368. Notes:    only available on InPort mouse
  2369.     values greater than 4 may cause unpredictable driver behavior
  2370.  
  2371. (Table 03176)
  2372. Values for mouse interrupt rate:
  2373.  00h    no interrupts allowed
  2374.  01h    30 per second
  2375.  02h    50 per second
  2376.  03h    100 per second
  2377.  04h    200 per second
  2378. --------M-33001D-----------------------------
  2379. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  2380.     AX = 001Dh
  2381.     BX = display page number
  2382. Note:    the cursor will be displayed on the specified page
  2383. SeeAlso: AX=001Eh
  2384. --------M-33001E-----------------------------
  2385. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  2386.     AX = 001Eh
  2387. Return: BX = display page number
  2388. SeeAlso: AX=001Dh
  2389. --------M-33001F-----------------------------
  2390. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  2391.     AX = 001Fh
  2392. Return: AX = status
  2393.         001Fh successful
  2394.         ES:BX = INT 33 vector before mouse driver was first installed
  2395.         FFFFh unsuccessful
  2396. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  2397.     if you restore INT 33 to ES:BX, driver will be completely disabled
  2398.     many drivers return AX=001Fh even though the driver has been disabled
  2399. SeeAlso: AX=0020h
  2400. --------M-330020-----------------------------
  2401. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  2402.     AX = 0020h
  2403. Return: AX = status
  2404.         0020h successful
  2405.         FFFFh unsuccessful
  2406. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  2407.       which were removed by function 1Fh
  2408.     Microsoft's documentation states that no value is returned
  2409. SeeAlso: AX=001Fh
  2410. --------M-330021-----------------------------
  2411. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  2412.     AX = 0021h
  2413. Return: AX = status
  2414.         FFFFh if mouse driver installed
  2415.         BX = number of buttons (FFFFh = two buttons)
  2416.         0021h if mouse driver not installed
  2417. Note:    this call is identical to funtion 00h, but does not reset the mouse
  2418. SeeAlso: AX=0000h
  2419. --------M-330022-----------------------------
  2420. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  2421.     AX = 0022h
  2422.     BX = language (see #03177)
  2423. Note:    only available on international versions of the driver; US versions
  2424.       ignore this call
  2425. SeeAlso: AX=0023h
  2426.  
  2427. (Table 03177)
  2428. Values for mouse driver language:
  2429.  00h    English
  2430.  01h    French
  2431.  02h    Dutch
  2432.  03h    German
  2433.  04h    Swedish
  2434.  05h    Finnish
  2435.  06h    Spanish
  2436.  07h    Portugese
  2437.  08h    Italian
  2438. --------M-330023-----------------------------
  2439. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  2440.     AX = 0023h
  2441. Return: BX = language (see #03177)
  2442. Note:    the US version of the driver always returns zero
  2443. SeeAlso: AX=0022h
  2444. --------M-330024-----------------------------
  2445. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  2446.     AX = 0024h
  2447. Return: AX = FFFFh on error
  2448.     otherwise,
  2449.         BH = major version
  2450.         BL = minor version
  2451.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  2452.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7,...,0Fh=IRQ15)
  2453. SeeAlso: AX=004Dh,AX=006Dh
  2454. --------M-330025-----------------------------
  2455. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  2456.     AX = 0025h
  2457. Return: AX = general information (see #03178)
  2458.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  2459.     CX = mouse code active flag (for OS/2)
  2460.     DX = mouse driver busy flag (for OS/2)
  2461.  
  2462. Bitfields for general mouse driver information:
  2463. Bit(s)    Description    (Table 03178)
  2464.  15    driver loaded as device driver rather than TSR
  2465.  14    driver is newer integrated type
  2466.  13,12    current cursor type
  2467.     00 software text cursor
  2468.     01 hardware text cursor (CRT Controller's cursor)
  2469.     1X graphics cursor
  2470.  11-8    interrupt rate (see #03176)
  2471.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  2472.       integrated driver type
  2473. --------M-330026-----------------------------
  2474. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  2475.     AX = 0026h
  2476. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  2477.     CX = maximum virtual X (for current video mode)
  2478.     DX = maximum virtual Y
  2479. Note:    for driver versions before 7.05, this call returns the currently-set
  2480.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  2481. SeeAlso: AX=0031h
  2482. --------M-330026-----------------------------
  2483. INT 33 - Genius Mouse 9.06 - ???
  2484.     AX = 0026h
  2485. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  2486. --------M-330027-----------------------------
  2487. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  2488.     AX = 0027h
  2489. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  2490.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  2491.     CX = horizontal mickeys moved since last call
  2492.     DX = vertical mickeys moved since last call
  2493. SeeAlso: AX=000Bh
  2494. --------M-330028-----------------------------
  2495. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  2496.     AX = 0028h
  2497.     CX = new video mode (call is NOP if 0000h)
  2498.     DH = Y font size (00h = default)
  2499.     DL = X font size (00h = default)
  2500. Return: CL = status (00h = successful)
  2501. Notes:    DX is ignored unless the selected video mode supports font size control
  2502.     when CX=0000h, an internal flag that had been set by a previous call
  2503.       is cleared; this is required before a mouse reset
  2504. SeeAlso: AX=0029h,INT 10/AH=00h
  2505. --------M-330029-----------------------------
  2506. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  2507.     AX = 0029h
  2508.     CX = previous video mode
  2509.         0000h get first supported video mode
  2510.         other get next supported mode after mode CX
  2511. Return: CX = first/next video mode (0000h = no more video modes)
  2512.     DS:DX -> description of video mode or 0000h:0000h if none
  2513. Notes:    the enumerated video modes may be in any order and may repeat
  2514.     the description string (if available) is terminated by '$' followed by
  2515.       a NUL byte
  2516. SeeAlso: AX=0028h
  2517. --------M-33002A-----------------------------
  2518. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  2519.     AX = 002Ah
  2520. Return: AX = internal counter controlling cursor visibility
  2521.     BX = cursor hot spot column
  2522.     CX = cursor hot spot row
  2523.     DX = mouse type (see #03179)
  2524. Note:    the hot spot location is relative to the upper left corner of the
  2525.       cursor block and may range from -128 to +127 both horizontally and
  2526.       vertically
  2527. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  2528.  
  2529. (Table 03179)
  2530. Values for mouse type:
  2531.  00h    none
  2532.  01h    bus
  2533.  02h    serial
  2534.  03h    InPort
  2535.  04h    IBM
  2536.  05h    Hewlett-Packard
  2537. --------M-33002B-----------------------------
  2538. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  2539.     AX = 002Bh
  2540.     BX = active acceleration profile
  2541.         0001h-0004h or FFFFh to restore default curves
  2542.     ES:SI -> buffer containing acceleration profile data (see #03180)
  2543. Return: AX = success flag
  2544. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  2545.  
  2546. Format of acceleration profile data:
  2547. Offset    Size    Description    (Table 03180)
  2548.  00h    BYTE    length of acceleration profile 1
  2549.  01h    BYTE    length of acceleration profile 2
  2550.  02h    BYTE    length of acceleration profile 3
  2551.  03h    BYTE    length of acceleration profile 4
  2552.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  2553.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  2554.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  2555.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  2556.  84h 32 BYTEs    speedup factor for acceleration profile 1
  2557.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2558.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  2559.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2560.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  2561.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2562.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  2563.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  2564. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  2565. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  2566. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  2567. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  2568. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  2569.       unused bytes in the speedup factor fields are filled with 10h
  2570. --------M-33002C-----------------------------
  2571. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  2572.     AX = 002Ch
  2573. Return: AX = status (0000h success)
  2574.     BX = currently-active acceleration profile
  2575.     ES:SI -> acceleration profile data (see #03180)
  2576. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  2577. --------M-33002D-----------------------------
  2578. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  2579.     AX = 002Dh
  2580.     BX = acceleration level
  2581.         0001h-0004h to set profile, or FFFFh to get current profile
  2582. Return: AX = status
  2583.         0000h successful
  2584.         ES:SI -> 16-byte blank-padded name of acceleration profile
  2585.         FFFEh invalid acceleration curve number
  2586.         ES:SI destroyed
  2587.     BX = active acceleration curve number
  2588. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  2589. --------M-33002E-----------------------------
  2590. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  2591.     AX = 002Eh
  2592.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  2593.     ES:SI -> 64-byte buffer containing profile names (16 bytes per name)
  2594. Return: AX = status (0000h success)
  2595.         FFFEh error for ATI Mouse driver
  2596.     ES:SI buffer filled with default names if BL nonzero on entry
  2597. Notes:    not supported by Logitech driver v6.10
  2598.     supported by ATI Mouse driver v7.04
  2599. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  2600. --------M-33002F-----------------------------
  2601. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  2602.     AX = 002Fh
  2603. Return: AX = status
  2604. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  2605. SeeAlso: INT 2F/AH=53h
  2606. --------M-330030-----------------------------
  2607. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  2608.     AX = 0030h
  2609.     CX = command
  2610.         0000h get status of BallPoint device
  2611.         other set rotation angle and masks
  2612.         BX = rotation angle (-32768 to 32767 degrees)
  2613.         CH = primary button mask
  2614.         CL = secondary button mask
  2615. Return: AX = button status (FFFFh if no BallPoint) (see #03181)
  2616.     BX = rotation angle (0-360 degrees)
  2617.     CH = primary button mask
  2618.     CL = secondary button mask
  2619. Note:    not supported by the ATI Mouse driver which calls itself v7.04
  2620.  
  2621. Bitfields for BallPoint mouse button status:
  2622. Bit(s)    Description    (Table 03181)
  2623.  5    button 1
  2624.  4    button 2
  2625.  3    button 3
  2626.  2    button 4
  2627.  other    zero
  2628. --------M-330031-----------------------------
  2629. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  2630.     AX = 0031h
  2631. Return: AX = virtual X minimum
  2632.     BX = virtual Y minimum
  2633.     CX = virtual X maximum
  2634.     DX = virtual Y maximum
  2635. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  2636.       the default is minimum = 0 and maximum = absolute maximum
  2637.       (see AX=0026h)
  2638. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  2639. --------M-330032-----------------------------
  2640. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  2641.     AX = 0032h
  2642. Return: AX = active function flags (FFFFh for v8.10)
  2643.         bit 15: function 0025h supported
  2644.         bit 14: function 0026h supported
  2645.         ...
  2646.         bit 0:  function 0034h supported
  2647.     BX = ??? (0000h) officially unused
  2648.     CX = ??? (E000h) officially unused
  2649.     DX = ??? (0000h) officially unused
  2650. Note:    the Italian version of MS MOUSE v8.20 reportedly indicates that
  2651.       functions 0033h and 0034h are not supported even though they are
  2652. --------M-330033-----------------------------
  2653. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  2654.     AX = 0033h
  2655.     CX = size of buffer
  2656.         0000h get required buffer size
  2657.         Return: AX = 0000h
  2658.             CX = required size (0154h for Logitech v6.10, 0159h
  2659.                 for MS v8.10-8.20)
  2660.         other
  2661.         ES:DX -> buffer of CX bytes for mouse settings
  2662.         Return: AX = 0000h
  2663.             CX = number of bytes returned
  2664.             ES:DX buffer filled (see #03182)
  2665. SeeAlso: AX=002Bh
  2666.  
  2667. Format of mouse settings data buffer:
  2668. Offset    Size    Description    (Table 03182)
  2669.  00h    BYTE    mouse type
  2670.  01h    BYTE    current language
  2671.  02h    BYTE    horizontal sensitivity (00h-64h)
  2672.  03h    BYTE    vertical sensitivity (00h-64h)
  2673.  04h    BYTE    double-speed threshold (00h-64h)
  2674.  05h    BYTE    ballistic curve (01h-04h)
  2675.  06h    BYTE    interrupt rate (01h-04h)
  2676.  07h    BYTE    cursor override mask
  2677.  08h    BYTE    laptop adjustment
  2678.  09h    BYTE    memory type (00h-02h)
  2679.  0Ah    BYTE    SuperVGA support (00h,01h)
  2680.  0Bh    BYTE    rotation angle
  2681.  0Ch    BYTE    ???
  2682.  0Dh    BYTE    primary button (01h-04h)
  2683.  0Eh    BYTE    secondary button (01h-04h)
  2684.  0Fh    BYTE    click lock enabled (00h,01h)
  2685.  10h 324 BYTEs    acceleration profile data (see #03180)
  2686. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  2687. --------M-330034-----------------------------
  2688. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  2689.     AX = 0034h
  2690. Return: AX = status (0000h successful)
  2691.     ES:DX -> ASCIZ initialization (.INI) file name
  2692. --------M-330035-----------------------------
  2693. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  2694.     AX = 0035h
  2695.     BX = function
  2696.         FFFFh get current settings
  2697.         Return: AX = 0000h
  2698.             BH = style (see #03183)
  2699.             BL = size (see #03184)
  2700.             CH = threshold (00h-64h)
  2701.             CL = active flag (00h disabled, 01h enabled)
  2702.             DX = delay
  2703.         other
  2704.         BH = pointer style (see #03183)
  2705.         BL = size (see #03184)
  2706.         CH = threshold (00h-64h)
  2707.         CL = active flag (00h disable size change, 01h enable)
  2708.         DX = delay (0000h-0064h)
  2709.         Return: AX = 0000h
  2710. Note:    not supported by Logitech driver v6.10
  2711. SeeAlso: AX=0012h,AX=002Ah
  2712.  
  2713. (Table 03183)
  2714. Values for pointer style:
  2715.  00h    normal
  2716.  01h    reverse
  2717.  02h    transparent
  2718. SeeAlso: #03184
  2719.  
  2720. (Table 03184)
  2721. Values for pointer size:
  2722.  00h    small ("1")
  2723.  01h    medium ("1.5")
  2724.  02h    large ("2")
  2725. SeeAlso: #03183
  2726. --------M-330042-----------------------------
  2727. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  2728.     AX = 0042h
  2729. Return: AX = status
  2730.         0000h MSMOUSE not installed
  2731.         0042h functions 42h, 50h, and 52h not supported
  2732.         FFFFh successful
  2733.         BX = buffer size in bytes for functions 50h and 52h
  2734. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2735. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  2736. --------M-330043-----------------------------
  2737. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  2738.     AX = 0043h
  2739.     CX:BX -> configuration buffer (see #03185)
  2740.     DL = ???
  2741. Return: ???
  2742. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  2743.     this function is also supported by the Genius Mouse 9.06 driver
  2744.  
  2745. Format of Mouse Systems configuration buffer:
  2746. Offset    Size    Description    (Table 03185)
  2747.  00h    WORD    I/O port address
  2748.  02h    BYTE    ???
  2749.  03h    BYTE    interrupt number
  2750.  04h    BYTE    interrupt mask for interrupt controller
  2751.  05h  5 BYTEs    ???
  2752. --------M-330044CXCDEF-----------------------
  2753. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  2754.     AX = 0044h
  2755.     CX = CDEFh
  2756. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  2757. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2758. SeeAlso: AX=0045h
  2759. --------M-330045CXCDEF-----------------------
  2760. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  2761.     AX = 0045h
  2762.     CX = CDEFh
  2763. Return: AX = new state of resolution doubling flag
  2764. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2765. SeeAlso: AX=0044h
  2766. --------M-330047-----------------------------
  2767. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  2768.     AX = 0047h
  2769.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  2770. Return: ???
  2771. Note:    also supported by Genius Mouse 9.06 driver
  2772. SeeAlso: AX=0067h
  2773. --------M-330048BXCDEF-----------------------
  2774. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  2775.     AX = 0048h
  2776.     BX = CDEFh
  2777. Return: CX = ???
  2778.     BH = ???
  2779.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  2780. Note:    also supported by Genius Mouse 9.06 driver
  2781. --------M-33004B-----------------------------
  2782. INT 33 - LCS/Telegraphics MOUSE DRIVERS - INSTALLATION CHECK / GET VERSION
  2783.     AX = 004Bh
  2784. Return: ES:DI -> ASCIZ signature/description string if installed (see #03186)
  2785.  
  2786. (Table 03186)
  2787. Values for LCS/Telegraphics mouse driver OEM signature/description string:
  2788.  "Primax Generic;Universal Mouse Driver;IMOUSE;v8.20i"
  2789.  "Synaptics;TouchPad Driver;SYNTOUCH;v2.26"
  2790.  "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  2791. Note:    the string consists of OEM, driver description, driver name, and
  2792.       version number
  2793. --------M-33004CBXCDEF-----------------------
  2794. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  2795.     AX = 004Ch
  2796.     BX = CDEFh
  2797. Note:    also supported by Genius Mouse 9.06
  2798. SeeAlso: AX=006Ch
  2799. --------M-33004D-----------------------------
  2800. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  2801.     AX = 004Dh
  2802. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft" or
  2803.         "Copyright 19XX...."
  2804. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  2805.       mouse drivers
  2806.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  2807.       follows the above copyright message (KYE Corp. manufactures the
  2808.       driver)
  2809. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  2810. --------M-33004F-----------------------------
  2811. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  2812.     AX = 004Fh
  2813. Return: nothing
  2814. Note:    also supported by Genius Mouse 9.06
  2815. SeeAlso: AX=0043h,AX=0053h
  2816. --------M-330050-----------------------------
  2817. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  2818.     AX = 0050h
  2819.     BX = buffer size (ignored by some driver versions)
  2820.     ES:DX -> buffer
  2821. Return: AX = FFFFh if successful
  2822. Notes:    the buffer must be large enough to hold the entire state, or following
  2823.       data will be overwritten by state data in versions which ignore BX;
  2824.       use INT 33/AX=0042h to get the required size
  2825.     this function is also supported by the Genius Mouse 9.06 driver
  2826. SeeAlso: AX=0042h,AX=0052h
  2827. --------M-330052-----------------------------
  2828. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  2829.     AX = 0052h
  2830.     BX = buffer size (ignored by some driver versions)
  2831.     ES:DX -> buffer
  2832. Return: AX = FFFFh if successful
  2833. Note:    also supported by Genius Mouse 9.06 driver
  2834. SeeAlso: AX=0050h
  2835. --------M-330053-----------------------------
  2836. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  2837.     AX = 0053h
  2838. Return: nothing
  2839. Note:    also supported by Genius Mouse 9.06
  2840. SeeAlso: AX=0043h,AX=004Fh
  2841. --------M-330054CXCDEF-----------------------
  2842. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  2843.     AX = 0054h
  2844.     CX = CDEFh
  2845.     BX = new acceleration level (0-9)
  2846. Return: ???
  2847. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2848. SeeAlso: AX=005Ah
  2849. --------M-330055-----------------------------
  2850. INT 33 - Kraft Mouse - GET ???
  2851.     AX = 0055h
  2852. Return: CX = ???
  2853.     DX = ???
  2854.     ES = ???
  2855. --------M-330058-----------------------------
  2856. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2857.     AX = 0058h
  2858. Return: AX = CS of driver
  2859.     CX:BX = original INT 33 vector
  2860.     DX = ???
  2861. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2862. --------M-33005A-----------------------------
  2863. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2864.     AX = 005Ah
  2865.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2866.     DX:SI -> buffer containing thresholds??? (CX words)
  2867.     DX:BX -> buffer containing acceleration values???
  2868.         (9*14h words, only first CX of each 14h used)
  2869.     ???
  2870. Return: CF clear
  2871.     ???
  2872. Note:    this function is also supported by Genius Mouse 9.06
  2873. SeeAlso: AX=0054h
  2874. --------M-330061BXCDEF-----------------------
  2875. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2876.     AX = 0061h
  2877.     BX = CDEFh
  2878. Return: CX = ???
  2879. Note:    also supported by Genius Mouse 9.06
  2880. --------M-330067-----------------------------
  2881. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2882.     AX = 0067h
  2883. Return: BL = number of buttons???
  2884. Note:    also supported by Genius Mouse 9.06
  2885. SeeAlso: AX=0047h
  2886. --------M-33006A-----------------------------
  2887. INT 33 U - ATI Mouse - INSTALLATION CHECK
  2888.     AX = 006Ah
  2889. Return: AL = AAh
  2890.     AH = ???
  2891.     BH = ???
  2892.     BL = ???
  2893.     CL = ???
  2894.     CH = ???
  2895. Program: ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
  2896.       some of ATI's video adapters
  2897. SeeAlso: AX=006Dh
  2898. --------M-33006C-----------------------------
  2899. INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
  2900.     AX = 006Ch
  2901.     BX = new IRQ (0003h or 0004h), or 0000h to get current values only
  2902.     CL = new IRQmask (sent to 8259)
  2903.     DX = new base I/O port
  2904. Return: BX = current IRQ
  2905.     DX = light pen state???
  2906. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2907.       TRUEDOX Technology Corporation
  2908. SeeAlso: AX=00A1h,AX=0666h
  2909. --------M-33006CBXCDEF-----------------------
  2910. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2911.     AX = 006Ch
  2912.     BX = CDEFh
  2913. Note:    also supported by Genius Mouse 9.06
  2914. SeeAlso: AX=004Ch
  2915. --------M-33006D-----------------------------
  2916. INT 33 - MS MOUSE - GET VERSION STRING
  2917.     AX = 006Dh
  2918. Return: ES:DI -> Microsoft version number of resident driver (see #03187)
  2919. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2920.       drivers
  2921.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2922.       Microsoft version as 7.00 even though they do not support any of the
  2923.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2924.       (the Genius Mouse driver supports function 0026h, but it differs
  2925.       from the Microsoft function)
  2926.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2927.       but as 6.24 through AX=0024h
  2928. SeeAlso: AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch
  2929.  
  2930. Format of Microsoft version number:
  2931. Offset    Size    Description    (Table 03187)
  2932.  00h    BYTE    major version
  2933.  01h    BYTE    minor version (BCD)
  2934. --------M-330070BXABCD-----------------------
  2935. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2936.     AX = 0070h
  2937.     BX = ABCDh
  2938. Return: AX = ABCDh if installed
  2939.         BX:CX -> data structure (see #03188)
  2940. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2941.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2942.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2943.     if POPUP is not loaded, the returned data structure contains the proper
  2944.       signature at offset 00h, but not at offset 08h
  2945.  
  2946. Format of Mouse Systems POPUP.COM data structure:
  2947. Offset    Size    Description    (Table 03188)
  2948.  00h    WORD    signature ABCDh
  2949.  02h    DWORD    pointer to info structure??? (see #03189)
  2950.  06h  2 BYTEs    ???
  2951.  08h    WORD    signature ABCDh
  2952.  
  2953. Format of Mouse Systems POPUP.COM info structure:
  2954. Offset    Size    Description    (Table 03189)
  2955.  00h    WORD    driver version
  2956.  02h  8 BYTEs    ???
  2957.  0Ah    WORD    segment of ???
  2958.     ???
  2959. --------M-330072BXABCD-----------------------
  2960. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2961.     AX = 0072h
  2962.     BX = ABCDh
  2963. Return: ???
  2964. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2965. --------M-330073BXCDEF-----------------------
  2966. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2967.     AX = 0073h
  2968.     BX = CDEFh
  2969.     ES:DX -> 3-byte buffer for button assignments
  2970. Return: CX = number of buttons???
  2971.     ES:DX buffer filled (default is "LMR")
  2972. Note:    also supported by Genius Mouse 9.06
  2973. SeeAlso: AX=0067h
  2974. --------M-3300A0-----------------------------
  2975. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
  2976.     AX = 00A0h
  2977. Return: nothing
  2978. Note:    this function is only available if the mouse mode is switchable
  2979.       through the power pins
  2980. SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
  2981. --------M-3300A1-----------------------------
  2982. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
  2983.     AX = 00A1h
  2984. Return: nothing
  2985. Notes:    this function is only available if the mouse mode is switchable
  2986.       through the power pins
  2987.     this is the mouse driver for the Dell Dimension series of computers, by
  2988.       TRUEDOX Technology Corporation
  2989. SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
  2990. --------M-3300A6-----------------------------
  2991. INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
  2992.     AX = 00A6h
  2993.     BX = new software resolution
  2994.         0001h 50-200 dpi
  2995.         0002h 200-400 dpi
  2996.         0003h 400-800 dpi
  2997. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2998.       TRUEDOX Technology Corporation
  2999. SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
  3000. --------M-3300B0-----------------------------
  3001. INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
  3002.     AX = 00B0h
  3003.     ???
  3004. Return: ???
  3005. --------M-3300D6-----------------------------
  3006. INT 33 - Twiddler TWMOUSE - GET BUTTON/TILT STATE
  3007.     AX = 00D6h
  3008. Return: AX = current button bitmap
  3009.     BX = current X tilt (approximately -200..+200 = -90degrees..+90deg.)
  3010.     CX = current Y tilt
  3011. Program: the Twiddler is a chording keyboard/mouse combination by Handykey
  3012.       Corporation
  3013. --------M-3300F0-----------------------------
  3014. INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
  3015.     AX = 00F0h
  3016.     ???
  3017. Return: ???
  3018. --------M-3300F1-----------------------------
  3019. INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
  3020.     AX = 00F1h
  3021.     ???
  3022. Return: ???
  3023. --------M-3300F2-----------------------------
  3024. INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
  3025.     AX = 00F2h
  3026.     ???
  3027. Return: ???
  3028. --------M-3300F3-----------------------------
  3029. INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
  3030.     AX = 00F3h
  3031.     ???
  3032. Return: ???
  3033. --------M-330100CX4752-----------------------
  3034. INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
  3035.     AX = 0100h
  3036.     CX = 4752h ('GR')
  3037.     DX = 544Dh ('TM')
  3038. Return: AX = 474Dh ('GM') if installed
  3039.         CX = version number (CH = major, CL = minor)
  3040. Program: GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
  3041. SeeAlso: AX=0101h,AX=0102h,AX=0103h,AX=0104h
  3042. --------M-330101-----------------------------
  3043. INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
  3044.     AX = 0101h
  3045.     DS:SI -> 16-byte cursor pattern
  3046. Return: CF clear if successful
  3047. SeeAlso: AX=0100h,AX=0102h
  3048. --------M-330102-----------------------------
  3049. INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
  3050.     AX = 0102h
  3051.     ES:DI -> 16-byte buffer for cursor pattern
  3052. SeeAlso: AX=0100h,AX=0101h
  3053. --------M-330103-----------------------------
  3054. INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
  3055.     AX = 0103h
  3056.     CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
  3057. Note:    the default active characters are D0h,D1h,D6h,D8h; the active
  3058.      characters should be in the range C0h to DFh
  3059. SeeAlso: AX=0100h,AX=0104h
  3060. --------M-330104-----------------------------
  3061. INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
  3062.     AX = 0104h
  3063. Return: CH,CL,DH,DL = ASCII codes for the active characters
  3064. SeeAlso: AX=0100h,AX=0103h
  3065. --------M-33012E-----------------------------
  3066. INT 33 - MS MOUSE v8.10+ - ???
  3067.     AX = 012Eh
  3068.     BL = ???
  3069. Return: AX = 0000h (MS)
  3070.     AX = FFFFh (ATI Mouse v7.04)
  3071. Note:    not supported by Logitech driver v6.10
  3072. SeeAlso: AX=002Eh,AX=022Eh
  3073. --------M-33022E-----------------------------
  3074. INT 33 - MS MOUSE v8.10+ - ???
  3075.     AX = 022Eh
  3076.     BL = ???
  3077. Return: AX = 0000h (MS)
  3078.     AX = FFFFh (ATI Mouse v7.04)
  3079. Note:    not supported by Logitech driver v6.10
  3080. SeeAlso: AX=002Eh,AX=012Eh
  3081. --------M-330666-----------------------------
  3082. INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
  3083.     AX = 0666h
  3084. Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
  3085. Note:    this is the mouse driver for the Dell Dimension series of computers,
  3086.       by TRUEDOX Technology Corporation
  3087. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  3088. --------M-33136C-----------------------------
  3089. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3090.     AX = 136Ch
  3091.     BX = ???
  3092. Return: AX = ???
  3093.     BX = ???
  3094. --------M-33146C-----------------------------
  3095. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  3096.     AX = 146Ch
  3097.     BL = function
  3098.         00h set ???
  3099.         BH = new value (zero/nonzero to clear/set)
  3100.         else get ???
  3101.         Return: ???
  3102. --------M-33156C-----------------------------
  3103. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  3104.     AX = 156Ch
  3105. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  3106.     ES:SI -> version string, terminated with CRLF
  3107. --------M-33166C-----------------------------
  3108. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3109.     AX = 166Ch
  3110.     BL = ???
  3111.         00h ???
  3112.         01h ???
  3113.         other ???
  3114.         BH = new value of ???
  3115.         Return: AX = FFFFh
  3116. --------M-33176C-----------------------------
  3117. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3118.     AX = 176Ch
  3119.     ???
  3120. Return: ???
  3121. --------M-33186C-----------------------------
  3122. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3123.     AX = 186Ch
  3124.     ???
  3125. Return: ???
  3126. --------M-33196C-----------------------------
  3127. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3128.     AX = 196Ch
  3129.     ???
  3130. Return: ???
  3131. --------M-331A6C-----------------------------
  3132. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  3133.     AX = 1A6Ch
  3134. Return: AX = FFFFh
  3135.     BX = ???
  3136.     CX = ???
  3137. SeeAlso: AX=1B6Ch
  3138. --------M-331B6C-----------------------------
  3139. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  3140.     AX = 1B6Ch
  3141.     BX = new value for ??? (0000h-0003h)
  3142. Return: AX = FFFFh
  3143. SeeAlso: AX=1A6Ch
  3144. --------M-331C6C-----------------------------
  3145. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3146.     AX = 1C6Ch
  3147.     BX = ???
  3148.         <42h ???
  3149.         =42h ???
  3150.         >42h ???
  3151.         ES:DI -> ???
  3152.         Return: AX = ???
  3153. --------M-331D6C-----------------------------
  3154. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  3155.     AX = 1D6Ch
  3156. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  3157. SeeAlso: AX=1E6Ch
  3158. --------M-331E6C-----------------------------
  3159. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  3160.     AX = 1E6Ch
  3161.     BX = direction (0=north, 1=south, 2=east, 3=west)
  3162. SeeAlso: AX=1D6Ch
  3163. --------M-331F6C-----------------------------
  3164. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  3165.     AX = 1F6Ch
  3166. Return: BX = 0=off, 1=on
  3167.     CX = 1=low, 2=high
  3168. SeeAlso: AX=002Ch,AX=236Ch
  3169. --------M-33206C-----------------------------
  3170. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  3171.     AX = 206Ch
  3172.     BX = parameter (00h = right, FFh = left)
  3173. SeeAlso: AX=216Ch
  3174. --------M-33216C-----------------------------
  3175. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  3176.     AX = 216Ch
  3177. Return: BX = parameter (00h = right, FFh = left)
  3178. SeeAlso: AX=206Ch
  3179. --------M-33226C-----------------------------
  3180. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  3181.     AX = 226Ch
  3182. Note:    this only frees memory; does not restore hooked interrupts
  3183. --------M-33236C-----------------------------
  3184. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  3185.     AX = 236Ch
  3186.     BX = 0=off, 1=on
  3187.     CX = 1=low, 2=high
  3188. SeeAlso: AX=002Ch,AX=1F6Ch
  3189. --------M-33246C-----------------------------
  3190. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  3191.     AX = 246Ch
  3192.     ES:DX -> parameter table buffer (see #03190)
  3193. Return: AX = FFFFh if driver installed for serial mouse
  3194. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  3195.  
  3196. Format of Logitech Mouse parameter table:
  3197. Offset    Size    Description    (Table 03190)
  3198.  00h    WORD    baud rate divided by 100  (serial mouse only)
  3199.  02h    WORD    emulation          (serial mouse only)
  3200.  04h    WORD    report rate          (serial mouse only)
  3201.  06h    WORD    firmware revision      (serial mouse only)
  3202.  08h    WORD    00h              (serial mouse only)
  3203.  0Ah    WORD    port              (serial mouse only)
  3204.  0Ch    WORD    physical buttons
  3205.  0Eh    WORD    logical buttons
  3206. --------M-33256CBX0000-----------------------
  3207. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  3208.     AX = 256Ch
  3209.     BX = 0000h
  3210.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  3211. Return: AX = FFFFh if driver installed for serial mouse
  3212. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  3213. --------M-33256CBX0001-----------------------
  3214. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  3215.     AX = 256Ch
  3216.     BX = 0001h
  3217.     CX = emulation type (see #03191)
  3218. Return: AX = FFFFh if driver installed for serial mouse
  3219. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  3220.  
  3221. (Table 03191)
  3222. Values for Logitech mouse emulation type:
  3223.  00h    5 byte packed binary
  3224.  01h    3 byte packed binary
  3225.  02h    hexadecimal
  3226.  03h    relative bit pad
  3227.  04h    not supported
  3228.  05h    MM Series
  3229.  06h    not supported
  3230.  07h    Microsoft
  3231. --------M-33256CBX0002-----------------------
  3232. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  3233.     AX = 256Ch
  3234.     BX = 0002h
  3235.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  3236. Return: AX = FFFFh if driver installed for serial mouse
  3237. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  3238. --------M-33256CBX0003-----------------------
  3239. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  3240.     AX = 256Ch
  3241.     BX = 0003h
  3242.     CX = port (1, 2)
  3243. Return: AX = FFFFh if driver installed for serial mouse
  3244. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  3245. --------M-33256CBX0004-----------------------
  3246. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  3247.     AX = 256Ch
  3248.     BX = 0004h
  3249.     CX = buttons (2, 3)
  3250. Return: AX = FFFFh if driver installed for serial mouse
  3251. SeeAlso: AX=246Ch,AX=276Ch
  3252. --------M-33266C-----------------------------
  3253. INT 33 - LOGITECH MOUSE - GET VERSION???
  3254.     AX = 266Ch
  3255. Return: BX = 'SS'
  3256.     CH = '4'  major version number
  3257.     CL = '1'  minor version number
  3258. SeeAlso: AX=006Dh
  3259. --------M-33276C-----------------------------
  3260. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  3261.     AX = 276Ch
  3262. SeeAlso: AX=256Ch
  3263. --------M-333000-----------------------------
  3264. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  3265.     AX = 3000h
  3266. Return: AX = FFFFh if installed
  3267.         BX = version number (BH = major, BL = minor)
  3268. Program: SMD is a programmer's library by Andy Hakim which provides a
  3269.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  3270.       SMD-based TSR which replaces the block mouse cursor in text
  3271.       applications.
  3272. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  3273. --------M-333001-----------------------------
  3274. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  3275.     AX = 3001h
  3276. Return: AX = status (0000h = disabled, 0001h = enabled)
  3277. Note:    SMD remains disabled if running under Desqview or in graphics mode
  3278. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  3279. --------M-333002-----------------------------
  3280. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  3281.     AX = 3002h
  3282. Return: AX = status (0000h = disabled, 0001h = enabled)
  3283. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  3284. --------M-333003-----------------------------
  3285. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  3286.     AX = 3003h
  3287.     BL = data structure selector
  3288.         00h Primary Bitmap (used for 25 line mode) (see #03192)
  3289.         01h Secondary Bitmap (used for 43/50 line modes) (see #03192)
  3290.         02h Sacrifice Character Map (see #03193)
  3291.         03h Program Information (see #03194)
  3292. Return: ES:DX -> selected data structure
  3293. SeeAlso: AX=3000h
  3294.  
  3295. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
  3296. Offset    Size    Description    (Table 03192)
  3297.  00h    BYTE    vertical size of bitmap (00h - 10h)
  3298.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  3299.  02h    BYTE    vertical hotspot position (00h - 10h)
  3300.  03h    BYTE    horizontal hotspot position (00h - 10h)
  3301.  04h 16 WORDs    cursor bitmap data
  3302.  14h 16 WORDs    screen bitmap data
  3303.  
  3304. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
  3305. Offset    Size    Description    (Table 03193)
  3306.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  3307.  01h    BYTE    actual character for the corresponding position on the screen
  3308.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  3309.  03h    BYTE         | 0h | 1h | 2h |      cursor
  3310.  04h    BYTE         |----+----+----|
  3311.  05h    BYTE         | 3h | 4h | 5h |
  3312.  06h    BYTE         |----+----+----|
  3313.  07h    BYTE         | 6h | 7h | 8h |
  3314.  08h    BYTE         +--------------+
  3315.  
  3316. Format of Program Information [SMD_INFO_STRUCT]:
  3317. Offset    Size    Description    (Table 03194)
  3318.  00h    WORD    segment of old interrupt 33h handler
  3319.  02h    WORD    offset of old interrupt 33h handler
  3320.  04h    WORD    PSP of SMD
  3321.  06h    BYTE    ENABLE/DISABLE manual setting status
  3322.  07h    BYTE    ENABLE/DISABLE internal usage status
  3323. --------M-333004-----------------------------
  3324. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  3325.     AX = 3004h
  3326. SeeAlso: AX=3000h
  3327. --------M-333005-----------------------------
  3328. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  3329.     AX = 3005h
  3330. SeeAlso: AX=3000h
  3331. --------M-334F00-----------------------------
  3332. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  3333.     AX = 4F00h
  3334. Return: AX = 004Fh if supported
  3335.     BX = ???
  3336.     ES:DI -> ???
  3337. SeeAlso: AX=4F01h
  3338. --------M-334F01-----------------------------
  3339. INT 33 - LOGITECH MOUSE v6.10+ - ???
  3340.     AX = 4F01h
  3341.     ES = ???
  3342. Return: AX = 004Fh if supported
  3343.     ES:DI -> ???
  3344. SeeAlso: AX=4F00h
  3345. --------M-336F00-----------------------------
  3346. INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
  3347.     AX = 6F00h
  3348.     BX <> 4850h
  3349. Return: BX = 4850h ('HP') if mouse driver written by Hewlett Packard
  3350. SeeAlso: INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h
  3351. --------M-338800-----------------------------
  3352. INT 33 U - InfoTrack IMOUSE.COM - UNHOOK MOUSE IRQ
  3353.     AX = 8800h
  3354.     BX <> FFFFh
  3355. Note:    the code is written to expect a subfunction number in AL, but only
  3356.       function 00h has been implemented
  3357. SeeAlso: AX=8800h/BX=FFFFh
  3358. --------M-338800BXFFFF-----------------------
  3359. INT 33 U - InfoTrack IMOUSE.COM - GET ACTIVE IRQ
  3360.     AX = 8800h
  3361.     BX = FFFFh
  3362. Return: BL = number of IRQ being used by the mouse
  3363. SeeAlso: AX=8800h
  3364. --------T-33FFE6-----------------------------
  3365. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  3366.     AX = FFE6h
  3367.     CX = length of buffer
  3368.     ES:DI -> buffer for program name
  3369. Return: ES:DI buffer filled
  3370. Program: Switch-It is a task switcher supporting up to 100 programs
  3371.       simultaneously by Better Software Technology, Inc.
  3372. --------T-33FFE7-----------------------------
  3373. INT 33 - Switch-It v3.23 - GET ???
  3374.     AX = FFE7h
  3375. Return: AX = ???
  3376. --------T-33FFE8-----------------------------
  3377. INT 33 - Switch-It v3.23 - ???
  3378.     AX = FFE8h
  3379.     CX = length of name including terminating NUL
  3380.     DS:SI -> ASCIZ program pathname
  3381. --------T-33FFE9-----------------------------
  3382. INT 33 - Switch-It v3.23 - SET ???
  3383.     AX = FFE9h
  3384.     BX = ???
  3385. --------T-33FFEA-----------------------------
  3386. INT 33 - Switch-It v3.23 - SET ???
  3387.     AX = FFEAh
  3388.     BL = ???
  3389. --------T-33FFEB-----------------------------
  3390. INT 33 - Switch-It v3.23 - SET ??? FLAG
  3391.     AX = FFEBh
  3392. --------T-33FFEC-----------------------------
  3393. INT 33 - Switch-It v3.23 - SET ???
  3394.     AX = FFECh
  3395.     BL = ???
  3396. --------T-33FFED-----------------------------
  3397. INT 33 - Switch-It v3.23 - GET ???
  3398.     AX = FFEDh
  3399. Return: AX = ??? (0001h)
  3400.     BX = ???
  3401. Program: Switch-It is a task switcher supporting up to 100 programs
  3402.       simultaneously by Better Software Technology, Inc.
  3403. --------T-33FFEE-----------------------------
  3404. INT 33 - Switch-It v3.23 - GET ???
  3405.     AX = FFEEh
  3406. Return: AX = ???
  3407. --------T-33FFEF-----------------------------
  3408. INT 33 - Switch-It v3.23 - GET ???
  3409.     AX = FFEFh
  3410. Return: BX:AX -> ???
  3411. --------T-33FFF0-----------------------------
  3412. INT 33 - Switch-It v3.23 - SET ???
  3413.     AX = FFF0h
  3414.     BL = ???
  3415. --------T-33FFF1-----------------------------
  3416. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  3417.     AX = FFF1h
  3418. Return: BX:AX -> ASCIZ pathname of configuration file
  3419. Program: Switch-It is a task switcher supporting up to 100 programs
  3420.       simultaneously by Better Software Technology, Inc.
  3421. --------T-33FFF2-----------------------------
  3422. INT 33 - Switch-It v3.23 - SET ??? FLAG
  3423.     AX = FFF2h
  3424. Return: AL = 01h
  3425. --------T-33FFF3-----------------------------
  3426. INT 33 - Switch-It v3.23 - GET ???
  3427.     AX = FFF3h
  3428. Return: AX = ???
  3429. --------T-33FFF4-----------------------------
  3430. INT 33 - Switch-It v3.23 - SET ???
  3431.     AX = FFF4h
  3432.     BX = ???
  3433.     CX = ???
  3434. --------T-33FFF5-----------------------------
  3435. INT 33 - Switch-It v3.23 - GET ???
  3436.     AX = FFF5h
  3437. Return: AX = ???
  3438. --------T-33FFF6-----------------------------
  3439. INT 33 - Switch-It v3.23 - GET ???
  3440.     AX = FFF6h
  3441. Return: AX = ???
  3442. --------T-33FFF7-----------------------------
  3443. INT 33 - Switch-It v3.23 - GET ???
  3444.     AX = FFF7h
  3445.     BX = index of ???
  3446. Return: AX = ???
  3447. --------T-33FFF8-----------------------------
  3448. INT 33 - Switch-It v3.23 - ???
  3449.     AX = FFF8h
  3450.     BX = ???
  3451.     CX = length of program name, including terminating NUL
  3452.     DS:SI -> ASCIZ program pathname
  3453. Return: ???
  3454. Program: Switch-It is a task switcher supporting up to 100 programs
  3455.       simultaneously by Better Software Technology, Inc.
  3456. --------T-33FFF9-----------------------------
  3457. INT 33 - Switch-It v3.23 - NOP
  3458.     AX = FFF9h
  3459. --------T-33FFFA-----------------------------
  3460. INT 33 - Switch-It v3.23 - SET ???
  3461.     AX = FFFAh
  3462.     BX = index of program
  3463. SeeAlso: AX=FFFBh,AX=FFFCh
  3464. --------T-33FFFB-----------------------------
  3465. INT 33 - Switch-It v3.23 - GET ???
  3466.     AX = FFFBh
  3467.     BX = index of program
  3468. Return: AX = ??? (0000h or 0001h)
  3469. SeeAlso: AX=FFFAh,AX=FFFCh
  3470. --------T-33FFFC-----------------------------
  3471. INT 33 - Switch-It v3.23 - CLEAR ???
  3472.     AX = FFFCh
  3473.     BX = index of program
  3474. SeeAlso: AX=FFFAh,AX=FFFCh
  3475. --------T-33FFFD-----------------------------
  3476. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  3477.     AX = FFFDh
  3478. Return: AX = first available segment???
  3479.     BX = paragraph of top of conventional memory
  3480.     DX = PSP segment of SI.EXE
  3481. --------T-33FFFE-----------------------------
  3482. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  3483.     AX = FFFEh
  3484. Return: BX = ???
  3485.     DX = 5349h ("SI")
  3486. --------T-33FFFF-----------------------------
  3487. INT 33 - Switch-It v3.23 - ???
  3488.     AX = FFFFh
  3489.     BX = ???
  3490. Program: Switch-It is a task switcher supporting up to 100 programs
  3491.       simultaneously by Better Software Technology, Inc.
  3492. --------r-34---------------------------------
  3493. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  3494. Desc:    this interrupt is used to emulate floating-point instructions with
  3495.       an opcode of D8h
  3496. Note:    the floating-point emulators in Borland and Microsoft languages and
  3497.       Lahey FORTRAN use this interrupt
  3498. SeeAlso: INT 35,INT 3E
  3499. --------r-35---------------------------------
  3500. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  3501. Desc:    this interrupt is used to emulate floating-point instructions with
  3502.       an opcode of D9h
  3503. Note:    the floating-point emulators in Borland and Microsoft languages and
  3504.       Lahey FORTRAN use this interrupt
  3505. SeeAlso: INT 34,INT 36
  3506. --------r-36---------------------------------
  3507. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  3508. Desc:    this interrupt is used to emulate floating-point instructions with
  3509.       an opcode of DAh
  3510. Note:    the floating-point emulators in Borland and Microsoft languages and
  3511.       Lahey FORTRAN use this interrupt
  3512. SeeAlso: INT 35,INT 37
  3513. --------r-37---------------------------------
  3514. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  3515. Desc:    this interrupt is used to emulate floating-point instructions with
  3516.       an opcode of DBh
  3517. Note:    the floating-point emulators in Borland and Microsoft languages and
  3518.       Lahey FORTRAN use this interrupt
  3519. SeeAlso: INT 36,INT 38
  3520. --------r-38---------------------------------
  3521. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  3522. Desc:    this interrupt is used to emulate floating-point instructions with
  3523.       an opcode of DCh
  3524. Note:    the floating-point emulators in Borland and Microsoft languages and
  3525.       Lahey FORTRAN use this interrupt
  3526. SeeAlso: INT 37,INT 39
  3527. --------O-38---------------------------------
  3528. INT 38 - PC-MOS/386 v3.0 - API
  3529. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  3530.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  3531.       12h
  3532. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  3533. --------r-39---------------------------------
  3534. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  3535. Desc:    this interrupt is used to emulate floating-point instructions with
  3536.       an opcode of DDh
  3537. Note:    the floating-point emulators in Borland and Microsoft languages and
  3538.       Lahey FORTRAN use this interrupt
  3539. SeeAlso: INT 38,INT 3A
  3540. --------r-3A---------------------------------
  3541. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  3542. Desc:    this interrupt is used to emulate floating-point instructions with
  3543.       an opcode of DEh
  3544. Note:    the floating-point emulators in Borland and Microsoft languages and
  3545.       Lahey FORTRAN use this interrupt
  3546. SeeAlso: INT 39,INT 3B
  3547. --------r-3B---------------------------------
  3548. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  3549. Desc:    this interrupt is used to emulate floating-point instructions with
  3550.       an opcode of DFh
  3551. Note:    the floating-point emulators in Borland and Microsoft languages and
  3552.       Lahey FORTRAN use this interrupt
  3553. SeeAlso: INT 3A,INT 3C
  3554. --------r-3C---------------------------------
  3555. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  3556. Notes:    the floating-point emulators in Borland and Microsoft languages and
  3557.       Lahey FORTRAN use this interrupt
  3558.     the generated code is  CD 3C xy mm ....
  3559.       where xy is a modified ESC instruction and mm is the modR/M byte.
  3560.       The xy byte appears to be encoded as
  3561.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  3562.       where "ss" specifies the segment override:
  3563.         00 -> DS:
  3564.         01 -> SS:
  3565.         10 -> CS:
  3566.         11 -> ES:
  3567. SeeAlso: INT 3B,INT 3D
  3568. --------r-3D---------------------------------
  3569. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  3570. Notes:    the floating-point emulators in Borland and Microsoft languages and
  3571.       Lahey FORTRAN use this interrupt
  3572.     this vector is modified but not restored by Direct Access v4.0, and
  3573.       may be left dangling by other programs written with the same version
  3574.       of compiled BASIC
  3575. SeeAlso: INT 3C,INT 3E
  3576. --------r-3E---------------------------------
  3577. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  3578. Notes:    the two bytes following the INT 3E instruction are the subcode
  3579.       (see #03195) and a NOP (90h), except for subcodes DCh and DEh, where
  3580.       the second byte is a register count (01h-08h)
  3581.     this vector is modified but not restored by Direct Access v4.0, and
  3582.       may be left dangling by other programs written with the same version
  3583.       of compiled BASIC
  3584. SeeAlso: INT 3D
  3585.  
  3586. (Table 03195)
  3587. Values for Borland floating-point shortcut subcode:
  3588. Subcode        Function
  3589.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  3590.       top of the stack prior to the INT 3E with the 8087 register contents
  3591.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  3592.       of 8086 stack
  3593.  E0h    round TOS and R1 to single precision, compare, pop twice
  3594.       returns AX=8087 status word, FLAGS=8087 condition bits
  3595.  E2h    round TOS and R1 to double precision, compare, pop twice
  3596.       returns AX=8087 status word, FLAGS=8087 condition bits
  3597.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  3598.       field to the undocumented value 01h; this results in actually
  3599.       rounding to single precision
  3600.  E4h    compare TOS/R1 with two POP's
  3601.       returns FLAGS=8087 condition bits
  3602.  E6h    compare TOS/R1 with POP
  3603.       returns FLAGS=8087 condition bits
  3604.  E8h    FTST (check TOS value)
  3605.       returns FLAGS=8087 condition bits
  3606.  EAh    FXAM (check TOS value)
  3607.       returns AX=8087 status word
  3608.  ECh    sine(ST0)
  3609.  EEh    cosine(ST0)
  3610.  F0h    tangent(ST0)
  3611.  F2h    arctangent(ST0)
  3612.  F4h    ST0 = ln(ST0)
  3613.  F6h    ST0 = log2(ST0)
  3614.  F8h    ST0 = log10(ST0)
  3615.  FAh    ST0 = e**ST0
  3616.  FCh    ST0 = 2**ST0
  3617.  FEh    ST0 = 10**ST0
  3618. --------r-3F---------------------------------
  3619. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  3620. Notes:    INT 3F is the default, and may be overridden while linking
  3621.     this vector is modified but not restored by Direct Access v4.0, and
  3622.       may be left dangling by other programs written with the same version
  3623.       of compiled BASIC
  3624. SeeAlso: INT FE"OVERLAY"
  3625. --------r-3F---------------------------------
  3626. INT 3F - Microsoft Dynamic Link Library manager
  3627. SeeAlso: INT 21/AH=4Bh
  3628. --------B-40---------------------------------
  3629. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  3630. SeeAlso: INT 13/AH=00h,INT 13/AH=02h,INT 47"SuperBIOS",INT 63"Adaptec"
  3631. --------h-40---------------------------------
  3632. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  3633. SeeAlso: INT 41"Z100",INT FF"Z100"
  3634. --------O-40---------------------------------
  3635. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  3636.     AL = operation
  3637.         00h close file
  3638.         40h open file for reading
  3639.         80h open file for writing
  3640.         C0h open file for random access
  3641.     DS:BX -> CR-terminated filename
  3642. Return: AL = file handle (00h if file closed or could not be opened)
  3643. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  3644.       6502-based Master 128 which uses the original CPU as an I/O processor
  3645. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  3646. --------h-40---------------------------------
  3647. INT 40 - TI Professional PC - IRQ0
  3648. Note:    on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
  3649.       that IBM connects to IRQ2
  3650. SeeAlso: INT 0A"IRQ2",INT 41"TI Professional"
  3651. --------B-41---------------------------------
  3652. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE ADDRESS [NOT A VECTOR!]
  3653. Notes:    the default parameter table array is located at F000h:E401h in 100%
  3654.       compatible BIOSes; the pointer may be overridden by the hard disk
  3655.       controller's BIOS to support drive formats unknown to the ROM BIOS
  3656.     not used by some PS/2 models
  3657.     BIOSes which support four hard drives may store the parameter tables
  3658.       for drives 81h-83h immediately following the parameter table pointed
  3659.       at by INT 41, with a separate copy of the drive 81h table for INT 46.
  3660.       The check for such an arrangement is to test whether INT 46 points
  3661.       somewhere other than exactly 16 bytes past INT 41, and the sixteen
  3662.       bytes starting at offset 10h from INT 41 are identical to the sixteen
  3663.       bytes pointed at by INT 46
  3664.     another arrangement for BIOSes which support four IDE drives is to have
  3665.       four tables pointed at by INT 41 in the order primary master,
  3666.       primary slave, secondary master, and secondary slave, in which case
  3667.       (for example) a system with only primary master and secondary master
  3668.       will have valid tables at offsets 00h and 20h, with garbage (but
  3669.       sectors-per-track = 00h) at offsets 10h and 30h
  3670. SeeAlso: #03196,INT 13/AH=09h,INT 1E,INT 46"HARD DISK 1",INT 60"Adaptec"
  3671. SeeAlso: INT C0"AMI"
  3672.  
  3673. Format of fixed disk parameters:
  3674. Offset    Size    Description    (Table 03196)
  3675.  00h    WORD    number of cylinders
  3676.  02h    BYTE    number of heads
  3677.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  3678.  05h    WORD    starting write precompensation cylinder number
  3679.  07h    BYTE    maximum ECC burst length (XT only)
  3680.  08h    BYTE    control byte (see #03197,#03198)
  3681.  09h    BYTE    standard timeout (XT only, 0 for others)
  3682.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  3683.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  3684.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  3685.  0Eh    BYTE    number of sectors per track (AT and later only)
  3686.  0Fh    BYTE    reserved
  3687. SeeAlso: #00273,#00277
  3688.  
  3689. Bitfields for XT fixed disk control byte:
  3690. Bit(s)    Description    (Table 03197)
  3691.  2-0    drive step speed
  3692.     000  3ms
  3693.     100  200ms
  3694.     101  70ms (default)
  3695.     110  3ms
  3696.     111  3ms
  3697.  5-3    unused
  3698.  6    disable ECC retries
  3699.  7    disable access retries
  3700.  
  3701. Bitfields for AT fixed disk control byte:
  3702. Bit(s)    Description    (Table 03198)
  3703.  0    unused
  3704.  1    reserved (0)  (disable IRQ)
  3705.  2    reserved (0)  (no reset)
  3706.  3    set if more than 8 heads
  3707.  4    always 0
  3708.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  3709.  6    disable ECC retries
  3710.  7    disable access retries
  3711. --------h-41---------------------------------
  3712. INT 41 - Z100 - Master 8259 - Processor Swap
  3713. SeeAlso: INT 40"Z100",INT 42"Z100"
  3714. --------h-41---------------------------------
  3715. INT 41 - TI Professional PC - IRQ1
  3716. Note:    on the TI Pro, IRQ1 is connected to the same pin on the expansion bus
  3717.       that IBM connects to IRQ3
  3718. SeeAlso: INT 0B"IRQ3",INT 40"TI Professional",INT 42"TI Professional"
  3719. --------O-41---------------------------------
  3720. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  3721.     AL = function
  3722.         01h put bytes sequentially
  3723.         02h put bytes, ignoring sequential pointer
  3724.         03h get bytes sequentially
  3725.         04h get bytes, ignoring sequential pointer
  3726.         05h get media title and boot option
  3727.         06h get current device and directory
  3728.         07h get current library and device
  3729.         08h search directory
  3730.     DS:BX -> control block (see #03199)
  3731. Return: CF clear if successful
  3732.     CF set on error
  3733.     AL = 00h if operation attempted
  3734.     AL unchanged if unsupported function
  3735. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  3736.  
  3737. Format of BBC Master control block:
  3738. Offset    Size    Description    (Table 03199)
  3739.  00h    BYTE    file handle
  3740.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  3741.  05h    DWORD    number of bytes to be transferred
  3742.  09h    DWORD    transfer address
  3743. --------G-410000-----------------------------
  3744. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  3745.     AX = 0000h
  3746.     DS:DX -> character
  3747. Note:    the kernel calls this function when it wants the user program to
  3748.       output a character
  3749. SeeAlso: AX=0001h
  3750. --------G-410001-----------------------------
  3751. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  3752.     AX = 0001h
  3753. Return: AL = character
  3754. Note:    the kernel calls this function when it needs to input a character
  3755. SeeAlso: AX=0000h
  3756. --------G-41000D-----------------------------
  3757. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  3758.     AX = 000Dh
  3759. SeeAlso: AX=000Eh
  3760. --------G-41000E-----------------------------
  3761. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  3762.     AX = 000Eh
  3763. SeeAlso: AX=000Dh
  3764. --------G-410012-----------------------------
  3765. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  3766.     AX = 0012h
  3767.     DS:SI -> string (Windows 3.0)
  3768.     ES:SI -> string (Windows 3.1)
  3769. Return: nothing???
  3770. Note:    this function is called by the kernel when it wants to output a
  3771.       string through the debugger
  3772. SeeAlso: AX=0050h,INT 68/AH=47h
  3773. --------G-41004F-----------------------------
  3774. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  3775.     AX = 004Fh
  3776. Return: AX = F386h if debugger is present
  3777. SeeAlso: INT 68/AX=4400h
  3778. --------G-410050-----------------------------
  3779. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  3780.     AX = 0050h
  3781.     BX = segment number in executable (0-based)
  3782.     CX = selector
  3783.     DX = instance handle
  3784.     SI = segment flags (0=code, 1=data)
  3785.     ES:DI -> module name of owner
  3786. Return: ???
  3787. SeeAlso: AX=0012h,AX=004Fh
  3788. --------G-410051-----------------------------
  3789. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  3790.     AX = 0051h
  3791.     ???
  3792. Return: ???
  3793. SeeAlso: AX=0050h,AX=0052h
  3794. --------G-410052-----------------------------
  3795. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  3796.     AX = 0052h
  3797.     BX = freed selector
  3798. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  3799. --------G-410059-----------------------------
  3800. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  3801.     AX = 0059h
  3802.     ???:BX = CS:IP of new task's starting point
  3803. --------G-41005C-----------------------------
  3804. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  3805.     AX = 005Ch
  3806.     BX = freed selector
  3807. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  3808.       to CS
  3809. SeeAlso: AX=0052h
  3810. --------G-410060-----------------------------
  3811. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  3812.     AX = 0060h
  3813.     ???
  3814. Return: ???
  3815. SeeAlso: AX=0061h
  3816. --------G-410061-----------------------------
  3817. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  3818.     AX = 0061h
  3819.     ???
  3820. Return: ???
  3821. SeeAlso: AX=0060h
  3822. --------G-410062-----------------------------
  3823. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  3824.     AX = 0062h
  3825. STACK:    BYTE    exit code
  3826. Return: ???
  3827.     STACK unchanged???
  3828. SeeAlso: AX=0064h
  3829. --------G-410063-----------------------------
  3830. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  3831.     AX = 0063h
  3832. --------G-410064-----------------------------
  3833. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  3834.     AX = 0064h
  3835.     CX:BX = DLL entry point CS:IP
  3836.     SI = module handle
  3837. SeeAlso: AX=0062h,AX=0065h
  3838. --------G-410065-----------------------------
  3839. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  3840.     AX = 0065h
  3841.     ES = module handle
  3842. SeeAlso: AX=0064h
  3843. --------G-410066-----------------------------
  3844. INT 41 CPU - MS Windows debugging kernel - ERROR
  3845.     AX = 0066h
  3846. Note:    called by LogError()
  3847. SeeAlso: AX=0067h
  3848. --------G-410067-----------------------------
  3849. INT 41 CPU - MS Windows debugging kernel - PARAMETER ERROR
  3850.     AX = 0067h
  3851. Note:    called by LogParamError()
  3852. SeeAlso: AX=0066h
  3853. --------V-42---------------------------------
  3854. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  3855. Desc:    contains the address of the original INT 10 handler which an EGA+
  3856.       video adapter replaces with its own on-board BIOS code
  3857. SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 6D"VGA"
  3858. Note:    not used by PS/2 built-in VGA or XGA
  3859. --------h-42---------------------------------
  3860. INT 42 - Z100 - Master 8259 - Timer
  3861. SeeAlso: INT 41"Z100",INT 43"Z100"
  3862. --------h-42---------------------------------
  3863. INT 42 - TI Professional PC - IRQ2
  3864. Note:    on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
  3865.       that IBM connects to IRQ4
  3866. SeeAlso: INT 0C"IRQ4",INT 41"TI Professional",INT 43"TI Professional"
  3867. --------b-42---------------------------------
  3868. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  3869. Note:    if the second WD1002 controller in the system finds INT 40 already in
  3870.       use, it uses this vector to cascade to the first controller's BIOS
  3871. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  3872. --------O-42---------------------------------
  3873. INT 42 - Acorn BBC Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  3874.     AL = byte to be written
  3875.     BH = file handle
  3876. Return: flags destroyed
  3877. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3878. --------V-425F33-----------------------------
  3879. INT 42 C - Chips & Technologies '65530' BIOS - MODE SET HOOK
  3880.     AX = 5F33h
  3881.     BL = current width in characters
  3882.     BH = curent video mode
  3883.     CH = active display page
  3884. Return:    nothing
  3885. Desc:    this function is called at the end of a video mode set
  3886. Note:    the OEM has the option of enabling or disabling this callout, as well
  3887.       as specifying whether the callout occurs on INT 15h or INT 42h
  3888. SeeAlso: INT 15/AX=5F31h,INT 15/AX=5F35h,INT 10/AX=5F50h,INT 15/AX=5F33h
  3889. --------V-427500-----------------------------
  3890. INT 42 U - Toshiba laptops - ???
  3891.     AX = 7500h
  3892.     BL = ??? (00h or 01h)
  3893. Return: ???
  3894. Note:    used by Toshiba utility VCHAD.EXE
  3895. SeeAlso: AX=7501h,AX=7503h
  3896. --------V-427501-----------------------------
  3897. INT 42 U - Toshiba laptop - GET ??? DATA
  3898.     AX = 7501h
  3899.     DS:DI -> data area to be filled ???
  3900. Return: area filled with data ???
  3901. Note:    used by Toshiba utility VCHAD.EXE
  3902. SeeAlso: AX=7500h,AX=7502h,AX=7503h
  3903. --------V-427502-----------------------------
  3904. INT 42 U - Toshiba laptops - SET ??? DATA
  3905.     AX = 7502h
  3906.     DS:DI -> data area ???
  3907. Return: ???
  3908. Note:    used by Toshiba utility VCHAD.EXE
  3909. SeeAlso: AX=7501h,AX=7503h
  3910. --------V-427503-----------------------------
  3911. INT 42 - Toshiba laptops - GET DISPLAY STATUS
  3912.     AX = 7503h
  3913. Return: AX = 7575h if supported
  3914.     CX = 0001h if supported
  3915.     BH = display type (00h color, 03h monochrome)
  3916.     BL = display state
  3917.         01h internal LCD display is active
  3918.         02h external VGA display is active
  3919.         03h both displays active / DeskStation display mode enabled
  3920.         (not possible on all machines)
  3921. Note:    used by VCHAD.EXE and supported by all Toshiba VGA laptops until about
  3922.       1994 (string "TOSHIBA " at F000:E010h should be checked before call)
  3923.     no longer supported by T21xx series, use INT 10/AX=5F50h instead
  3924.     INT 42 normally points to F000:F065h but may be redirected by QEMM386
  3925. SeeAlso: AX=7500h,AX=7504h,INT 10/AX=5F50h,INT 15/AH=C0h
  3926. --------V-427504-----------------------------
  3927. INT 42 U - Toshiba laptops - ???
  3928.     AX = 7504h
  3929.     BL = ???
  3930. Return: BH = ???
  3931. Note:    used by Toshiba utility VCHAD.EXE
  3932. SeeAlso: AX=7500h,AX=7503h
  3933. --------V-43---------------------------------
  3934. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  3935. Desc:    points at graphics data for characters 00h-7Fh of the current font
  3936.       in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
  3937.       modes
  3938. Note:    this is not a callable vector!
  3939. SeeAlso: INT 06"no-name",INT 1F"SYSTEM DATA",INT 44"VIDEO"
  3940. --------h-43---------------------------------
  3941. INT 43 - Z100 - Master 8259 - Slave 8259 input
  3942. Note:    slave runs in special fully nested mode
  3943. SeeAlso: INT 42"Z100",INT 44"Z100"
  3944. --------h-43---------------------------------
  3945. INT 43 - TI Professional PC - IRQ3 - TIMER1 25ms INTERVAL INTERRUPT
  3946. SeeAlso: INT 0B"IRQ3",INT 42"TI Professional",INT 44"TI Professional"
  3947. SeeAlso: INT 58"TI Professional"
  3948. --------O-43---------------------------------
  3949. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  3950.     BH = file handle
  3951. Return: CF clear if successful
  3952.         AL = byte read from file
  3953.     CF set on error
  3954. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  3955. --------V-44---------------------------------
  3956. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  3957. Desc:    this vector points at graphics data for current character font
  3958. SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO"
  3959. --------N-44---------------------------------
  3960. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  3961. --------I-44---------------------------------
  3962. INT 44 - IBM 3270-PC High Level Language API
  3963.     DS:SI -> parameter control block
  3964. --------h-44---------------------------------
  3965. INT 44 - Z100 - Master 8259 - Serial A
  3966. SeeAlso: INT 43"Z100",INT 45"Z100"
  3967. --------h-44---------------------------------
  3968. INT 44 - TI Professional PC - IRQ4
  3969. Note:    on the TI Pro, IRQ4 is connected to the same pin on the expansion bus
  3970.       that IBM connects to IRQ5
  3971. SeeAlso: INT 0D"IRQ5",INT 43"TI Professional",INT 45"TI Professional"
  3972. --------v-44---------------------------------
  3973. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  3974. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  3975. --------O-4400-------------------------------
  3976. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  3977.     AH = 00h
  3978.     AL = function
  3979.         00h get current filing system
  3980.         Return: AL = filing system (see #03200)
  3981.         01h get address of commandline tail
  3982.         Return: BX buffer filled with address of command tail in I/O
  3983.                   processor address space (use INT 4A/AL=05h to
  3984.                   retrieve)
  3985.         FFh flush all files onto secondary storage
  3986.     BX -> 4-byte data buffer
  3987. Note:    the commandline tail is terminated with a carriage return (0Dh)
  3988. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  3989.  
  3990. (Table 03200)
  3991. Values for BBC Master filing system:
  3992.  00h    none
  3993.  01h    1200 bps cassette
  3994.  02h    300 bps cassette
  3995.  03h    ROM FS
  3996.  04h    DFS
  3997.  05h    ANFS/NFS
  3998.  06h    TFS
  3999.  08h    ADFS
  4000. --------O-44---------------------------------
  4001. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  4002.     AH = nonzero file handle
  4003.     AL = function
  4004.         00h get sequential pointer for file
  4005.         01h set sequential pointer for file
  4006.         02h get length of file
  4007.     BX -> 4-byte data buffer
  4008. Return: BX buffer updated if appropriate
  4009. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  4010. --------h-45---------------------------------
  4011. INT 45 - Z100 - Master 8259 - Serial B
  4012. SeeAlso: INT 44"Z100",INT 46"Z100"
  4013. --------h-45---------------------------------
  4014. INT 45 - TI Professional PC - IRQ5
  4015. Note:    on the TI Pro, IRQ5 is connected to the same pin on the expansion bus
  4016.       that IBM connects to IRQ6
  4017. SeeAlso: INT 0E"IRQ6",INT 44"TI Professional",INT 46"TI Professional"
  4018. --------O-45---------------------------------
  4019. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  4020.     AL = function
  4021.         00h save block of memory as file
  4022.         01h update directory entry for existing file
  4023.         02h set load address for existing file
  4024.         03h set execution address for existing file
  4025.         04h set attributes for existing file
  4026.         05h read directory
  4027.         06h delete file
  4028.         FFh load file
  4029.     DS:BX -> control block (see #03201)
  4030. Return: FLAGS destroyed
  4031.     AL = file type
  4032.         00h not found
  4033.         01h file found
  4034.         02h directory found
  4035.         FFh protected file
  4036. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  4037.  
  4038. Format of BBC Master control block:
  4039. Offset    Size    Description    (Table 03201)
  4040.  00h    WORD    address of CR-terminated filename
  4041.  02h    DWORD    load address of file
  4042.  06h    DWORD    execution address of file
  4043.  0Ah    DWORD    start address of data to save
  4044.  0Eh    DWORD    end address of data to save, or file attributes
  4045.         file attributes in low byte (see #03202)
  4046.         other three bytes are filing-system specific file attributes
  4047.  
  4048. Bitfields for BBC Master file attributes:
  4049. Bit(s)    Description    (Table 03202)
  4050.  0    no owner read access
  4051.  1    no owner write access
  4052.  2    not executable by owner
  4053.  3    not deletable by owner
  4054.  4    no public read access
  4055.  5    no public write access
  4056.  6    not executable with public access
  4057.  7    not deletable with public access
  4058. --------B-46---------------------------------
  4059. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE ADDRESS [NOT A VECTOR!]
  4060. Note:    not used by some PS/2 models
  4061. SeeAlso: INT 13/AH=09h,INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI"
  4062. --------h-46---------------------------------
  4063. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  4064. SeeAlso: INT 45"Z100",INT 47"Z100"
  4065. --------h-46---------------------------------
  4066. INT 46 - TI Professional PC - IRQ6 - FLOPPY DISK CONTROLLER
  4067. Note:    on the TI Pro, IRQ6 is connected to the same pin on the expansion bus
  4068.       that IBM connects to IRQ7
  4069. SeeAlso: INT 0F"IRQ7",INT 45"TI Professional",INT 47"TI Professional"
  4070. --------O-46---------------------------------
  4071. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  4072. Return: CF clear if successful
  4073.         AL = character read
  4074.     CF set on error
  4075.         AL = error code
  4076. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  4077. --------h-47---------------------------------
  4078. INT 47 - Z100 - Master 8259 - Printer
  4079. SeeAlso: INT 46"Z100",INT 48"Z100"
  4080. --------h-47---------------------------------
  4081. INT 47 - TI Professional PC - IRQ7 - KEYBOARD USART
  4082. SeeAlso: INT 09"IRQ1",INT 46"TI Professional"
  4083. --------O-47---------------------------------
  4084. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  4085.     AL = character to be written
  4086. Return: FLAGS destroyed
  4087. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  4088. --------b-47---------------------------------
  4089. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  4090. Desc:    used by the second WD1002-27X controller to cascade to the first
  4091.       controller's INT 40
  4092. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  4093. ----------478000-----------------------------
  4094. INT 47 - SQL Base - DATABASE ENGINE API
  4095.     AX = 8000h
  4096.     DS:BX -> parameter block, first word is function number (see #03203)
  4097. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  4098. SeeAlso: AX=8001h
  4099.  
  4100. (Table 03203)
  4101. Values for SQL Base function number:
  4102.  01h    "SQLFINI" initalialize application's use of the database
  4103.  02h    "SQLFDON" application is done using the database
  4104.  03h    "SQLFCON" connect to a cursor/database
  4105.  04h    "SQLFDIS" disconnect from a cursor/database
  4106.  05h    "SQLFCOM" compile a SQL command
  4107.  06h    "SQLFEXE" execute a SQL command
  4108.  07h    "SQLFCEX" compile and execute a SQL command
  4109.  08h    "SQLFCMT" commit a transaction to the database
  4110.  09h    "SQLFDES" describe the items of a SELECT statement
  4111.  0Ah    "SQLFGFI" get fetch information
  4112.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  4113.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  4114.  0Dh    "SQLFEFB" enable fetch backwards
  4115.  0Eh    "SQLFPRS" position in result set
  4116.  0Fh    "SQLFURS" undo result set
  4117.  10h    "SQLFNBV" get number of bind variables
  4118.  11h    "SQLFBND" bind data variables
  4119.  12h    "SQLFBNN" bind numerics
  4120.  13h    "SQLFBLN" bind long number
  4121.  14h    "SQLFBLD" bind long data variables
  4122.  15h    "SQLFSRS" start restriction set processing
  4123.  16h    "SQLFRRS" restart restriction set processing
  4124.  17h    "SQLFCRS" close restriction set
  4125.  18h    "SQLFDRS" drop restriction set
  4126.  19h    "SQLFARF" apply Roll Forward journal
  4127.  1Ah    "SQLFERF" end Roll Forward journal
  4128.  1Bh    "SQLFSRF" start Roll Forward journal
  4129.  1Ch    "SQLFSTO" store a compiled SQL command
  4130.  1Dh    "SQLFRET" retrieve a compiled SQL command
  4131.  1Eh    "SQLFDST" drop a stored command
  4132.  1Fh    "SQLFCTY" get command type
  4133.  20h    "SQLFEPO" get error position
  4134.  21h    "SQLFGNR" get number of rows
  4135.  22h    "SQLFNSI" get number of select items
  4136.  23h    "SQLFRBF" get Roll Back flag
  4137.  24h    "SQLFRCD" get return code
  4138.  25h    "SQLFROW" get number of ROWs
  4139.  26h    "SQLFSCN" set cursor name
  4140.  27h    "SQLFSIL" set isolation level
  4141.  28h    "SQLFSLP" set log parameters
  4142.  29h    "SQLFSSB" set select buffer
  4143.  2Ah    "SQLFSSS" set sort space
  4144.  2Bh    "SQLFRLO" read long
  4145.  2Ch    "SQLFWLO" write long
  4146.  2Dh    "SQLFLSK" long seek
  4147.  2Eh    "SQLFGLS" get long size
  4148.  2Fh    "SQLFELO" end long operation
  4149.  30h    "SQLFRBK" roll back a transaction from the database
  4150.  31h    "SQLFERR" error message
  4151.  32h    "SQLFCPY" copy
  4152.  33h    "SQLFR01" reserved
  4153.  34h    "SQLFSYS" system
  4154.  35h    "SQLFSTA" statistics
  4155.  36h    "SQLFR02" reserved
  4156.  37h    "SQLFXAD" extra add
  4157.  38h    "SQLFXCN" extra character to number
  4158.  39h    "SQLFXDA" extra date add
  4159.  3Ah    "SQLFXDP" extra date picture
  4160.  3Bh    "SQLFXDV" extra divide
  4161.  3Ch    "SQLFXML" extra multiply
  4162.  3Dh    "SQLFXNP" extra number picture
  4163.  3Eh    "SQLFXPD" extra picture date
  4164.  3Fh    "SQLFXSB" extra subtract
  4165.  40h    "SQLFINS" install database
  4166.  41h    "SQLFDIN" deinstall database
  4167.  42h    "SQLFDIR" directory of databases
  4168.  43h    "SQLFTIO" timeout
  4169.  44h    "SQLFFQN" get fully qualified column name
  4170.  45h    "SQLFEXP" explain execution plan
  4171.  46h    "SQLFFER" get full error
  4172.  47h    "SQLFBKP" begin online backup
  4173.  48h    "SQLFRDC" read backup data chunk
  4174.  49h    "SQLFEBK" end backup
  4175.  4Ah    "SQLFRES" begin restore from backup
  4176.  4Bh    "SQLFWDC" write backup data chunk for restore
  4177.  4Ch    "SQLFRRD" recover restored database to consistent state
  4178.  4Dh    "SQLFERS" end restore
  4179.  4Eh    "SQLFNRR" return number of result set rows
  4180.  4Fh    "SQLFSTR" start restriction mode
  4181.  50h    "SQLFSPR" stop restriction mode
  4182.  51h    "SQLFCNC" connect 2
  4183.  52h    "SQLFCNR" connect with no recovery
  4184.  53h    "SQLFOMS" set output message size
  4185.  54h    "SQLFIMS" set input message size
  4186.  55h    "SQLFSCP" set cache pages
  4187.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  4188.  57h    "SQLFLAB" get label info for items in SELECT statement
  4189.  58h    "SQLFCBV" clear bind variables
  4190.  59h    "SQLFGET" get database information
  4191.  5Ah    "SQLFSET" set database information
  4192.  5Bh    "SQLFTEC" translate error code
  4193. ----------478001-----------------------------
  4194. INT 47 - SQL Base - GET VERSION NUMBER
  4195.     AX = 8001h
  4196. Return: ???
  4197. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  4198. SeeAlso: AX=8000h
  4199. --------B-48---------------------------------
  4200. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  4201. SeeAlso: INT 49"PCjr"
  4202. --------h-48---------------------------------
  4203. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  4204. SeeAlso: INT 47"Z100",INT 49"Z100"
  4205. --------N-48---------------------------------
  4206. INT 48 - Watstar PC Network data pointer 1
  4207. SeeAlso: INT 49"Watstar"
  4208. --------O-48---------------------------------
  4209. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  4210. Return: FLAGS destroyed
  4211. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  4212. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  4213. --------b-48---------------------------------
  4214. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  4215. Note:    the second WD1002-27X controller in a system uses the low byte to
  4216.       store the number of drives controlled by the second controller,
  4217.       and the high word for temporary storage during track recalculation;
  4218.       the first controller uses offsets 74h-77h in the BIOS data area
  4219.       (refer to MEMORY.LST) to store data
  4220. SeeAlso: INT 47"SuperBIOS"
  4221. --------V-48---------------------------------
  4222. INT 48 U - Compaq UILIB.EXE - API
  4223.     AX = function (see #03204)
  4224.     BX = call type (0002h) (see #03207)
  4225.     ???
  4226. Return: ???
  4227. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  4228.       listed below
  4229. SeeAlso: AX=1A70h
  4230.  
  4231. (Table 03204)
  4232. Values for valid UILIB function number:
  4233.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  4234.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  4235.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  4236.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  4237.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  4238.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  4239.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  4240.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  4241.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  4242.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  4243.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  4244.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  4245.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  4246.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  4247.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  4248.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  4249.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  4250.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  4251.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  4252.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  4253.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  4254.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  4255.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  4256. --------b-4800-------------------------------
  4257. INT 48 - TI Professional PC - SPEAKER DEVICE - SOUND SPEAKER
  4258.     AH = 00h
  4259.     AL = number of 25ms ticks sound should last
  4260. Return: nothing
  4261. Desc:    sound the speaker at the current frequency setting (see AH=02h) for
  4262.       the indicated duration
  4263. Notes:    this function returns immediately; the sound is terminated by the
  4264.       timer interrupt handler
  4265.     if a new sound is requested while one is already in progress, the
  4266.       previous sound is terminated immediately and the new sound takes
  4267.       its place
  4268. SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4269. SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
  4270. SeeAlso: INT 4A/AH=00h"TI",INT 4C"TI Professional",INT 4D/AH=00h
  4271. --------b-4801-------------------------------
  4272. INT 48 - TI Professional PC - SPEAKER DEVICE - CHECK SPEAKER STATUS
  4273.     AH = 01h
  4274. Return: ZF clear if speaker is currently on
  4275.     ZF set if speaker is currently off
  4276. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4277. --------b-4802-------------------------------
  4278. INT 48 - TI Professional PC - SPEAKER DEVICE - SET SPEAKER FREQUENCY
  4279.     AH = 02h
  4280.     CX = frequency divisor (freq = 1250000 / CX)
  4281. Return: nothing
  4282. SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4283. --------b-4803-------------------------------
  4284. INT 48 - TI Professional PC - SPEAKER DEVICE - TURN ON SPEAKER
  4285.     AH = 03h
  4286. Return: nothing
  4287. Desc:    turn on the speaker at the current frequency, leaving it on until
  4288.       explicitly turned off with AH=04h or the end of a subsequent
  4289.       AH=00h
  4290. SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4291. --------b-4804-------------------------------
  4292. INT 48 - TI Professional PC - SPEAKER DEVICE - TURN OFF SPEAKER
  4293.     AH = 04h
  4294. Return: nothing
  4295. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4296. --------b-4805-------------------------------
  4297. INT 48 - TI Professional PC - SPEAKER DEVICE - DELAY
  4298.     AH = 05h
  4299.     CX = desired delay in milliseconds
  4300. Return: after delay expires
  4301. Note:    the delay is only approximate, and may be longer than requested
  4302. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4303. --------b-4806-------------------------------
  4304. INT 48 - TI Professional PC - CALCULATE CRC
  4305.     AH = 06h
  4306.     ES:BX -> memory block for which to calculate CRC
  4307.     BP = size of block in bytes
  4308. Return: DX = CRC for block
  4309.     ZF set if DX = 0000h
  4310. Note:    if the CRC of a memory block is appended to the block, then the CRC
  4311.       of the block plus CRC should equal 0000h
  4312. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4313. --------b-4807-------------------------------
  4314. INT 48 - TI Professional PC - PRINT ROM MESSAGE
  4315.     AH = 07h
  4316.     SI = offset of ASCIZ message string within segment F400h
  4317. Return: nothing
  4318. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4319. --------b-4808-------------------------------
  4320. INT 48 - TI Professional PC - DISPLAY SYSTEM ERROR MESSAGE
  4321.     AH = 08h
  4322.     BX = error number
  4323. Return: nothing
  4324. Desc:    displays the error message " ** System Error ** - xxxx" where xxxx is
  4325.       the hexadecimal value in BX
  4326. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4327. --------b-4809-------------------------------
  4328. INT 48 - TI Professional PC - GET SYSTEM CONFIGURATION DATA
  4329.     AH = 09h
  4330. Return: ES:BX -> system configuration word (see #03227)
  4331. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
  4332. --------b-480A-------------------------------
  4333. INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFO ADDRESS
  4334.     AH = 0Ah
  4335. Return: ES:BX -> configuration information (see #03205)
  4336. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Bh
  4337.  
  4338. Format of TI Professional PC extra system configuration information:
  4339. Offset    Size    Description    (Table 03205)
  4340.  -3    WORD    memory size in paragraphs
  4341.  00h    BYTE    drive type byte (see #03206)
  4342.  01h    WORD    extra system configuration word 1
  4343.         bit 0: 8087 is present
  4344.         bits 15-1: reserved (0)
  4345.  03h    WORD    extra system configuration word 2
  4346.         bits 15-0: reserved (0)
  4347.  
  4348. Bitfields for TI Professional PC drive type byte:
  4349. Bit(s)    Description    (Table 03206)
  4350.  0    drive A is double-sided
  4351.  1    drive A has 80 tracks instead of 40
  4352.  2    drive B is double-sided
  4353.  3    drive B has 80 tracks instead of 40
  4354.  4    drive C is double-sided
  4355.  5    drive C has 80 tracks instead of 40
  4356.  6    drive D is double-sided
  4357.  7    drive D has 80 tracks instead of 40
  4358. Note:    the type for drive A is determined by motherboard switches; the
  4359.       remaining drives' types are set from a table in IO.SYS
  4360. SeeAlso: #03205
  4361. --------b-480B-------------------------------
  4362. INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFORMATION
  4363.     AH = 0Bh
  4364. Return: AL = drive type byte (see #03206)
  4365.     BX = extra system configuration word 1 (see #03205)
  4366.     CX = extra system configuration word 2 (see #03205)
  4367.     AH destroyed
  4368. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah
  4369. --------V-481A70-----------------------------
  4370. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  4371.     AX = 1A70h
  4372.     BX = call type (see #03207)
  4373. Return: CX = 5649h ('VI') if installed
  4374.     DX = 4557h ('EW') if installed
  4375.         AX = version??? (0106h)
  4376.  
  4377. (Table 03207)
  4378. Values for UILIB call type:
  4379.  0000h    near
  4380.  0001h    far
  4381.  0002h    INT (only valid call type when using INT 48)
  4382.  0003h    near
  4383. --------B-49---------------------------------
  4384. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  4385. SeeAlso: #03208,INT 48"PCjr"
  4386.  
  4387. Format of PCjr scan-code translation table:
  4388. Offset    Size    Description    (Table 03208)
  4389.  00h    BYTE    number of non-keyboard scancodes in the table
  4390.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  4391.           representing the scancode mapped values relative to their
  4392.           input values within the range of 56h through 7Eh
  4393. --------h-49---------------------------------
  4394. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  4395. SeeAlso: INT 48"Z100",INT 4A"Z100"
  4396. --------N-49---------------------------------
  4397. INT 49 - Watstar PC Network data pointer 2
  4398. SeeAlso: INT 48"Watstar"
  4399. --------O-49---------------------------------
  4400. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  4401.     AL = character to be written
  4402. Return: FLAGS destroyed
  4403. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  4404. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  4405. --------b-49---------------------------------
  4406. INT 49 - Tandy 2000 - BOOTSTRAP LOADER
  4407. Note:    this interrupt is identical to INT 19
  4408. SeeAlso: INT 19,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 51"Tandy 2000"
  4409. --------a-490001-----------------------------
  4410. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  4411.     AX = 0001h
  4412. Return: AX = status (see #03209)
  4413.     BX,CX,DX destroyed
  4414. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  4415.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  4416. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  4417.       actual interrupt in use may be found by searching for the signature
  4418.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  4419.       the interrupt handler (this is also the installation check).    MAGic
  4420.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  4421.       the interrupt handler's segment, followed by MAGic's TSR ID of
  4422.       "VMAG".
  4423. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  4424. Index:    installation check;MAGic
  4425.  
  4426. (Table 03209)
  4427. Values for MAGic status:
  4428.  0000h    cannot magnify current video mode
  4429.  0002h    magnified (text mode)
  4430.  0003h    magnified (graphics mode)
  4431.  FFFDh    function works only in magnified mode
  4432.  FFFFh    MAGic busy, retry later
  4433. --------a-490002-----------------------------
  4434. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  4435.     AX = 0002h
  4436. Return: AX = status (see #03209)
  4437.     BX,CX,DX destroyed
  4438. SeeAlso: AX=0001h
  4439. --------a-490003-----------------------------
  4440. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  4441.     AX = 0003h
  4442.     BX = vertical position (character row [text] or pixel row [graphics])
  4443.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  4444. Return: AX = status
  4445.         0000h successful
  4446.         FFFFh MAGic busy, retry later
  4447.     BX,CX,DX destroyed
  4448. Note:    window is not moved if the position is inside the current window
  4449. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  4450. --------a-490004-----------------------------
  4451. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  4452.     AX = 0004h
  4453.     BX = vertical position of upper left corner
  4454.     DX = horizontal position
  4455. Return: AX = status (see AX=0003h)
  4456.     BX,CX,DX destroyed
  4457. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  4458. --------a-490005-----------------------------
  4459. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  4460.     AX = 0005h
  4461. Return: AX = status
  4462.         0000h successful
  4463.         BX = vertical position (char row or pixel row)
  4464.         DX = horizontal position (char column or 8-pixel units)
  4465.         FFFFh MAGic busy, retry later
  4466.         BX,DX destroyed
  4467.     CX destroyed
  4468. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  4469. --------a-490006-----------------------------
  4470. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  4471.     AX = 0006h
  4472. Return: AX = status
  4473.         0000h successful
  4474.         BX = vertical size (char rows or pixel rows)
  4475.         DX = horizontal size (char cols or 8-pixel units)
  4476.         FFFFh MAGic busy, retry later
  4477.         BX,DX destroyed
  4478.     CX destroyed
  4479. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  4480. --------a-490007-----------------------------
  4481. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  4482.     AX = 0007h
  4483. Return: AX = status
  4484.         0000h successful
  4485.         BX = vertical size (char rows or pixel rows)
  4486.         DX = horizontal size (char cols or 8-pixel units)
  4487.         FFFEh invalid function
  4488.         FFFFh MAGic busy, retry later
  4489.         BX,DX destroyed
  4490.     CX destroyed
  4491. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  4492.       AX=0000h is accepted and will branch into hyperspace
  4493. SeeAlso: AX=0001h,AX=0006h
  4494. --------a-490008-----------------------------
  4495. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  4496.     AX = 0008h
  4497.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  4498. Return: AX = status
  4499.         0000h successful
  4500.         FFFBh scaling factor only available in MAGic Deluxe
  4501.         FFFCh already in magnified state, can't set size
  4502. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  4503.       magnify the display
  4504.     scaling factors greater than 2 are only available in MAGic Deluxe
  4505. SeeAlso: AX=0001h
  4506. --------V-4901-------------------------------
  4507. INT 49 - TI Professional PC - CRT - SET CURSOR SIZE AND TYPE
  4508.     AH = 01h
  4509.     CH = cursor start line (bits 3-0) and status (bits 6-5)
  4510.         status bits:
  4511.         00 non-blinking cursor
  4512.         01 no cursor
  4513.         10 fast-blinking cursor
  4514.         11 slow-blinking cursor
  4515.     CL = cursor end line
  4516. Return: nothing
  4517. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4518. SeeAlso: AH=02h,AH=03h,INT 40"TI Professional",INT 48/AH=00h"TI Professional"
  4519. SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
  4520. SeeAlso: INT 57"TI Professional"
  4521. --------V-4902-------------------------------
  4522. INT 49 - TI Professional PC - CRT - SET CURSOR POSITION
  4523.     AH = 02h
  4524.     DH = column
  4525.     DL = row
  4526. Return: DX destroyed
  4527. Notes:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4528.     the TI swaps the row and column compared to the equivalent IBM call
  4529. SeeAlso: AH=01h,AH=03h
  4530. --------V-4903-------------------------------
  4531. INT 49 - TI Professional PC - CRT - GET CURSOR POSTION AND TYPE
  4532.     AH = 03h
  4533. Return: CH = cursor start and status (see AH=01h)
  4534.     CL = cursor end line
  4535.     DH = cursor column
  4536.     DL = cursor row
  4537. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4538. SeeAlso: AH=01h,AH=02h
  4539. --------V-4906-------------------------------
  4540. INT 49 - TI Professional PC - CRT - SCROLL UP/COPY WINDOW
  4541.     AH = 06h
  4542.     AL = source blanking
  4543.         00h blank source region (move/scroll)
  4544.         nonzero do not blank source region (copy)
  4545.     DH,DL = source start column,row
  4546.     BH,BL = destination start column,row
  4547.     CH = width of region to move/copy
  4548.     CL = height of region to move/copy
  4549. Return: nothing
  4550. Notes:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4551.     the specified region may be wider than the screen, but reliable
  4552.       operation then requires that the height be exactly one row
  4553. SeeAlso: AH=01h,AH=02h,AH=07h,AH=13h,AH=14h
  4554. --------V-4907-------------------------------
  4555. INT 49 - TI Professional PC - CRT - SCROLL DOWN/COPY WINDOW
  4556.     AH = 07h
  4557.     AL = source blanking
  4558.         00h blank source region (move/scroll)
  4559.         nonzero do not blank source region (copy)
  4560.     DH,DL = source start column,row
  4561.     BH,BL = destination start column,row
  4562.     CH = width of region to move/copy
  4563.     CL = height of region to move/copy
  4564. Return: nothing
  4565. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4566. SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h,AH=14h
  4567. --------V-4908-------------------------------
  4568. INT 49 - TI Professional PC - CRT - GET CHARACTER AND ATTRIBUTE AT POSITION
  4569.     AH = 08h
  4570. Return: AL = character at current cursor position
  4571.     AH = attribute
  4572. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4573. SeeAlso: AH=01h,AH=09h,AH=0Ah,AH=0Eh,INT 10/AH=08h
  4574. --------V-4909-------------------------------
  4575. INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH ATTRIBUTE
  4576.     AH = 09h
  4577.     AL = character to write
  4578.     BL = attribute to use (becomes new current attribute)
  4579.     CX = number of times to write character
  4580. Return: nothing
  4581. Desc:    write CX copies of the character in AL beginning at the current cursor
  4582.       position
  4583. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4584. SeeAlso: AH=01h,AH=08h,AH=0Ah,AH=0Eh,INT 10/AH=09h
  4585. --------V-490A-------------------------------
  4586. INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH CURRENT ATTRIBUTE
  4587.     AH = 0Ah
  4588.     AL = character to write
  4589.     CX = number of times to write character
  4590. Return: nothing
  4591. Desc:    write CX copies of the character in AL beginning at the current cursor
  4592.       position
  4593. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4594. SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Eh,INT 10/AH=0Ah
  4595. --------V-490E-------------------------------
  4596. INT 49 - TI Professional PC - CRT - TTY OUTPUT
  4597.     AH = 0Eh
  4598.     AL = character to write
  4599. Return: nothing
  4600. Desc:    write the character in AL at the current cursor position, advancing
  4601.       the cursor, and interpreting CR, LF, TAB, and BEL characters
  4602. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4603. SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Ah,INT 10/AH=0Eh
  4604. --------V-4910-------------------------------
  4605. INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH ATTRIBUTE
  4606.     AH = 10h
  4607.     AL = attribute (becomes new current attribute)
  4608.     DX:BX -> string of characters to write
  4609.     CX = length of string
  4610. Return: nothing
  4611. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4612. BUG:    CX must not be 0000h on entry, or the system will crash
  4613. SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=11h
  4614. --------V-4911-------------------------------
  4615. INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH CURR ATTRIB
  4616.     AH = 11h
  4617.     DX:BX -> string of characters to write
  4618.     CX = length of string
  4619. Return: nothing
  4620. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4621. BUG:    CX must not be 0000h on entry, or the system will crash
  4622. SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=10h
  4623. --------V-4912-------------------------------
  4624. INT 49 - TI Professional PC - CRT - FILL ENTIRE SCREEN WITH ATTRIBUTE
  4625.     AH = 12h
  4626.     AL = attribute (see #03210)
  4627. Return: nothing
  4628. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4629. SeeAlso: AH=01h,AH=02h
  4630.  
  4631. Bitfields for TI Professional PC screen attribute:
  4632. Bit(s)    Description    (Table 03210)
  4633.  7    alternate character set (requires user-supplied ROM)
  4634.  6    blink
  4635.  5    underline
  4636.  4    reverse video
  4637.  3    character enable
  4638.  2    green (color) or 58% intensity (gray-scale)
  4639.  1    red (color)  or 27.5% intensity
  4640.  0    blue (color) or 14.5% intensity
  4641. --------V-4913-------------------------------
  4642. INT 49 - TI Professional PC - CRT - CLEAR ENTIRE TEXT SCREEN AND HOME CURSOR
  4643.     AH = 13h
  4644. Return: nothing
  4645. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4646. SeeAlso: AH=01h,AH=02h,AH=06h,AH=14h
  4647. --------V-4914-------------------------------
  4648. INT 49 - TI Professional PC - CRT - CLEAR ENTIRE GRAPHICS SCREEN
  4649.     AH = 14h
  4650. Return: nothing
  4651. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4652. SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h
  4653. --------V-4915-------------------------------
  4654. INT 49 - TI Professional PC - CRT - SET PROTECTED STATUS AREA
  4655.     AH = 15h
  4656.     CL = row at which to start status area, or 00h to cancel
  4657.     CH = 00h
  4658. Return: nothing
  4659. Desc:    set a protected area of the screen which will not be affected by TTY
  4660.       writes or the scrolls they may generate
  4661. Notes:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4662.     the current cursor position must be above the status area in order to
  4663.       set the protected area
  4664. SeeAlso: AH=01h,AH=02h
  4665. --------V-4916-------------------------------
  4666. INT 49 - TI Professional PC - CRT - SET ATTRIBUTE LATCH
  4667.     AH = 16h
  4668.     BL = new attribute (see #03210)
  4669. Return: nothing
  4670. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4671. SeeAlso: AH=01h,AH=02h
  4672. --------V-4917-------------------------------
  4673. INT 49 - TI Professional PC - CRT - GET START-OF-DISPLAY POINTER
  4674.     AH = 17h
  4675. Return: DX = current offset at which display starts
  4676. Note:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4677. SeeAlso: AH=01h,AH=02h,INT 10/AH=FEh
  4678. --------V-4918-------------------------------
  4679. INT 49 - TI Professional PC - CRT - PRINT TTY STRING
  4680.     AH = 18h
  4681.     CS:BX -> counted string (count byte with length followed by string)
  4682. Return: nothing
  4683. Notes:    AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
  4684.     the string must be located in the caller's code segment; any TSRs
  4685.       which want to hook INT 49 must check for this function and emulate
  4686.       it, because the BIOS retrieves the caller's CS from the stack
  4687. SeeAlso: AH=01h,AH=02h,AH=0Eh
  4688. --------B-4A---------------------------------
  4689. INT 4A C - SYSTEM - USER ALARM HANDLER
  4690. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  4691.       occurs; an application may use it to perform an action at a
  4692.       predetermined time.
  4693. Note:    this interrupt is called from within a hardware interrupt handler,
  4694.       so all usual precautions against reentering DOS must be taken
  4695. SeeAlso: INT 1A/AH=06h
  4696. --------h-4A---------------------------------
  4697. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  4698. SeeAlso: INT 49"Z100",INT 4B"Z100"
  4699. --------b-4A---------------------------------
  4700. INT 4A - Tandy 2000 - PRINT SCREEN
  4701. Note:    this interrupt is identical to INT 05
  4702. SeeAlso: INT 05"PRINT SCREEN"
  4703. --------O-4A---------------------------------
  4704. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  4705.     AL = function code
  4706.         FAh transfer data between 80186 and 65C12 I/O processor
  4707.     DS:BX -> control block (see #03211)
  4708. Return: FLAGS destroyed
  4709.     control block updated
  4710. Note:    there are more functions than are listed here, but details are not
  4711.       available
  4712. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  4713.  
  4714. Format of BBC Master control block for function FAh:
  4715. Offset    Size    Description    (Table 03211)
  4716.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  4717.  01h    BYTE    number of parameters read from I/O processor (01h)
  4718.  02h    DWORD    I/O processor address
  4719.  06h    DWORD    80186 segment:offset address
  4720.  0Ah    WORD    number of bytes to transfer
  4721.  0Ch    BYTE    operation type
  4722.         00h write to 65C12 at 24 us/byte
  4723.         01h read from 65C12 at 24 us/byte
  4724.         02h write to 65C12 at 26 us/word
  4725.         03h read from 65C12 at 26 us/word
  4726.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  4727.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  4728.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  4729.         (see #03212)
  4730.  
  4731. Bitfields for 65C12 memory access control:
  4732. Bit(s)    Description    (Table 03212)
  4733.  7    unused
  4734.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  4735.  5    use shadow screen memory if screen address specified
  4736.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  4737.       address between 8000h and BFFFh)
  4738.  3-0    paged ROM number
  4739. --------b-4A00-------------------------------
  4740. INT 4A - TI Professional PC - KEYBOARD - GET KEYPRESS
  4741.     AH = 00h
  4742. Return: AX = keystroke (AH=00h for ASCII keys -- no scan code)
  4743. SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=00h
  4744. SeeAlso: INT 47"TI Professional",INT 48/AH=00h"TI Professional"
  4745. SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
  4746. SeeAlso: INT 5B"TI Professional"
  4747. --------b-4A01-------------------------------
  4748. INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD STATUS
  4749.     AH = 01h
  4750. Return: ZF set if no keystroke available
  4751.     ZF clear if keystrokes in buffer
  4752.         AX = next keystroke (AH=00h for ASCII keys -- no scan code)
  4753. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=01h
  4754. --------b-4A02-------------------------------
  4755. INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD MODE
  4756.     AH = 02h
  4757. Return: AL = shift states (see #03213)
  4758. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=02h
  4759.  
  4760. Bitfields for TI Professional PC keyboard shift states:
  4761. Bit(s)    Description    (Table 03213)
  4762.  0    Ctrl key pressed
  4763.  1    Alt key pressed
  4764.  2    either Shift key pressed
  4765.  3-6    0
  4766.  7    CapsLock is ON
  4767. --------b-4A03-------------------------------
  4768. INT 4A - TI Professional PC - KEYBOARD - FLUSH KEYBOARD BUFFER
  4769.     AH = 03h
  4770. Return: nothing
  4771. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
  4772. --------b-4A04-------------------------------
  4773. INT 4A - TI Professional PC - KEYBOARD - SEND COMMAND TO KEYBOARD
  4774.     AH = 04h
  4775.     AL = command
  4776.         00h reset to default states
  4777.         01h enable auto-repeat (default)
  4778.         02h disable auto-repeat
  4779.         03h lock keyboard
  4780.         04h unlock keyboard (default)
  4781.         05h enable keyclick (requires hardware modification to work)
  4782.         06h disable keyclick (default)
  4783. Return: nothing
  4784. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
  4785. --------b-4A05-------------------------------
  4786. INT 4A - TI Professional PC - KEYBOARD - INSERT CHARACTER INTO KEYBOARD BUFFER
  4787.     AH = 05h
  4788.     BX = character code (BH=00h if ASCII character, BL=00h/BH nonzero for
  4789.           extended codes) (see #03214)
  4790. Return: ZF set if keyboard buffer was already full
  4791.     ZF clear if keystroke inserted into buffer
  4792. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 5B"TI"
  4793.  
  4794. (Table 03214)
  4795. Values for TI Professional PC scan/character codes:
  4796.  Scan    Key    Normal    Shift    Ctrl    Alt    Notes
  4797.  00h      -- unused
  4798.  01h    F5    3F00h    5800h    6200h    6C00h
  4799.  02h    F6    4000h    5900h    6300h    6D00h
  4800.  03h    F7    4100h    5A00h    6400h    6E00h
  4801.  04h    F8    4200h    5B00h    6500h    6F00h
  4802.  05h    F9    4300h    5C00h    6600h    7000h
  4803.  06h    F10    4400h    5D00h    6700h    7100h
  4804.  07h    F11    4500h    0800h    0A00h    0C00h
  4805.  08h    F12    4600h    0900h    0B00h    0D00h
  4806.  09h    1 !    0031h    0021h    ----    7800h
  4807.  0Ah    2 @    0032h    0040h    0300h    7900h
  4808.  0Bh    3 #    0033h    0023h    ----    7A00h
  4809.  0Ch    4 $    0034h    0024h    ----    7B00h
  4810.  0Dh    5 %    0035h    0025h    ----    7C00h
  4811.  0Eh    6 ^    0036h    005Eh    001Eh    7D00h
  4812.  0Fh    7 &    0037h    0026h    ----    7E00h
  4813.  10h    8 *    0038h    002Ah    ----    7F00h
  4814.  11h    9 (    0039h    0028h    ----    8000h
  4815.  12h    0 )    0030h    0029h    ----    8100h
  4816.  13h    - _    002Dh    005Fh    001Fh    8200h
  4817.  14h    = +    003Dh    002Bh    ----    8300h
  4818.  15h BACK SPACE 0008h    0008h    007Fh    ----
  4819.  16h    ` ~    0060h    007Eh    ----    ----
  4820.  17h    NUM =    003Dh    003Dh    003Dh    8C00h
  4821.  18h    NUM +    002Bh    002Bh    002Bh    8D00h
  4822.  19h   NUM SPAC    0020h    0020h    0020h    8E00h
  4823.  1Ah   NUM TAB    0009h    0F00h    0009h    8F00h
  4824.  1Bh    NUM 1    0031h    0031h    0031h    (alt-###)    [Note 5]
  4825.  1Ch    (unused)
  4826.  1Dh    NUM 0    0030h    0030h    0030h    (alt-###)    [Note 5]
  4827.  1Eh  NUM ENTER    000Dh    000Dh    000Dh    ----
  4828.  1Fh    NUM 4    0034h    0034h    0034h    (alt-###)    [Note 5]
  4829.  20h    NUM 5    0035h    0035h    0035h    (alt-###)    [Note 5]
  4830.  21h    NUM 9    0039h    0039h    0039h    (alt-###)    [Note 5]
  4831.  22h    NUM -    002Dh    002Dh    002Dh    ----
  4832.  23h    NUM 2    0032h    0032h    0032h    (alt-###)    [Note 5]
  4833.  24h-26h  -- unused
  4834.  27h    NUM 7    0037h    0037h    0037h    (alt-###)    [Note 5]
  4835.  28h    NUM 8    0038h    0038h    0038h    (alt-###)    [Note 5]
  4836.  29h    NUM 6    0036h    0036h    0036h    (alt-###)    [Note 5]
  4837.  2Ah    NUM ,    002Ch    002Ch    002Ch    ----
  4838.  2Bh    NUM 3    0033h    0033h    0033h    (alt-###)    [Note 5]
  4839.  2Ch    NUM .    002Eh    002Eh    002Eh    ----
  4840.  2Dh    PRINT    7200h    [Note2]    ----    ----    [Notes 1,2]
  4841.  2Eh   RtArrow    4D00h    8A00h    7400h    4E00h
  4842.  2Fh    INS    5200h    2800h    2900h    2A00h    [Note 1]
  4843.  30h    DEL    5300h    3800h    3900h    3A00h    [Note 1]
  4844.  31h    TAB    0009h    0F00h    0009h    ----
  4845.  32h    Q    0071h    0051h    0011h    1000h
  4846.  33h    W    0077h    0057h    0017h    1100h
  4847.  34h    E    0065h    0045h    0005h    1200h
  4848.  35h    R    0072h    0052h    0012h    1300h
  4849.  36h    T    0074h    0054h    0014h    1400h
  4850.  37h    Y    0079h    0059h    0019h    1500h
  4851.  38h    U    0075h    0055h    0015h    1600h
  4852.  39h    I    0069h    0049h    0009h    1700h
  4853.  3Ah    O    006Fh    004Fh    000Fh    1800h
  4854.  3Bh    P    0070h    0050h    0010h    1900h
  4855.  3Ch    [ {    005Bh    007Bh    001Bh    ----
  4856.  3Dh    ] }    005Dh    007Dh    001Dh    ----
  4857.  3Eh  LINE FEED    000Ah    000Ah    7500h    4F00h
  4858.  3Fh  BRK/PAUS    [Note3]    [Note4]    ----    ----    [Notes 1,3,4]
  4859.  40h  UpArrow    4800h    8800h    8400h    4900h
  4860.  41h    ESC    001Bh    001Bh    001Bh    ----
  4861.  42h    A    0061h    0041h    0001h    1E00h
  4862.  43h    S    0073h    0053h    0013h    1F00h
  4863.  44h    D    0064h    0044h    0004h    2000h
  4864.  45h    F    0066h    0046h    0006h    2100h
  4865.  46h    G    0067h    0047h    0007h    2200h
  4866.  47h    H    0068h    0048h    0008h    2300h
  4867.  48h    J    006Ah    004Ah    000Ah    2400h
  4868.  49h    K    006Bh    004Bh    000Bh    2500h
  4869.  4Ah    L    006Ch    004Ch    000Ch    2600h
  4870.  4Bh    ; :    003Bh    003Ah    ----    ----
  4871.  4Ch    ' "    0027h    0022h    ----    ----
  4872.  4Dh    RETURN    000Dh    000Dh    000Dh    ----
  4873.  4Eh    \ |    005Ch    007Ch    001Ch    ----
  4874.  4Fh  LeftArrow    4B00h    8B00h    7300h    4C00h
  4875.  50h    HOME    4700h    8600h    7700h    8500h
  4876.  51h  Space Bar    0020h    0020h    0020h    0020h
  4877.  52h    Z    007Ah    005Ah    001Ah    2C00h
  4878.  53h    X    0078h    0058h    0018h    2D00h
  4879.  54h    C    0063h    0043h    0003h    2E00h
  4880.  55h    V    0076h    0056h    0016h    2F00h
  4881.  56h    B    0062h    0042h    0002h    3000h
  4882.  57h    N    006Eh    004Eh    000Eh    3100h
  4883.  58h    M    006Dh    004Dh    000Dh    3200h
  4884.  59h    , <    002Ch    003Ch    ----    ----
  4885.  5Ah  PRINT    7200h    [Note2]    ----    ----    [Notes 1,2]
  4886.  5Bh    . >    002Eh    003Eh    ----    ----
  4887.  5Ch    / ?    002Fh    003Fh    ----    ----
  4888.  5Dh    (unused)
  4889.  5Eh    DEL    5300h    3800h    3900h    3A00h    [Note 1]
  4890.  5Fh    INS    5200h    2800h    2900h    2A00h    [Note 1]
  4891.  60h  DownArrow    5000h    8900h    7600h    5100h
  4892.  61h-63h  -- unused
  4893.  64h  BRK/PAUS    [Note3]    [Note4]    ----    ----    [Notes 1,3,4]
  4894.  65h    F1    3B00h    5400h    5E00h    6800h
  4895.  66h    F2    3C00h    5500h    5F00h    6900h
  4896.  67h    F3    3D00h    5600h    6000h    6A00h
  4897.  68h    F4    3E00h    5700h    6100h    6B00h
  4898.  69h-6Fh  -- unused
  4899. Notes:    [1] four of the keys can have differing scan codes, depending on the
  4900.       actual keyboard; the BIOS accepts either scan code ("normal": 2Fh,
  4901.       30h, 5Ah, 64h; "alternate": 2Dh,3Fh,5Eh,5Fh) for any of these keys
  4902.     [2] Shift-Print invokes INT 5E for a screen dump; the PRTSCRN.DEV
  4903.       device driver also supports Alt-Print, Ctrl-Print, Shift-Alt-Print,
  4904.       and Shift-Ctrl-Print for dumping graphics in various permutations
  4905.     [3] BRK/PAUS invokes INT 5C for a pause, then stuffs 0100h into the
  4906.       keyboard buffer
  4907.     [4] Shift-BRK/PAUS invokes INT 5D for the Break, then stuffs 0000h
  4908.       into the keyboard buffer; MS-DOS hooks INT 5D to keep the 0000h from
  4909.       appearing in the keyboard buffer
  4910.     [5] on the TI Pro, one enters an arbitrary character slightly
  4911.       differently than on a standard PC: exactly three numberpad digits
  4912.       must be pressed (using leading zeros for codes less than 100), and
  4913.       the key for the requested code is inserted into the keyboard buffer
  4914.       immediately on pressing the third key.  The Alt key may be released
  4915.       and re-pressed arbitrarily often between digits without affecting
  4916.       the Alt-digit-digit-digit sequence.
  4917.     scan codes with bit 7 set are not key releases, but rather
  4918.       auto-repeated keystrokes, which the BIOS only places into the
  4919.       keyboard buffer if the buffer is empty at the time (thus avoiding
  4920.       typeahead of repeated keystrokes faster than they can be processed)
  4921. SeeAlso: #00006 at INT 09
  4922. --------h-4B---------------------------------
  4923. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  4924. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  4925. --------d-4B---------------------------------
  4926. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  4927.     ES:DI -> CAM Control Block (see #03229 at INT 4F/AX=8100h)
  4928. InstallCheck:    test for the string "SCSI_CAM" eight bytes past the INT 4Bh
  4929.       handler
  4930. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  4931.       to avoid conflicting with the IBM SCSI interface and the Virtual
  4932.       DMA specification
  4933.     the only driver to date reported to use the CAM interface on INT 4B
  4934.       instead of INT 4F is from Future Domain (which has drivers for CAM
  4935.       on either interrupt)
  4936. SeeAlso: INT 4F/AX=8100h
  4937. Index:    installation check;Common Access Method SCSI interface
  4938. --------b-4B---------------------------------
  4939. INT 4B - Tandy 2000 - EQUIPMENT DETERMINATION
  4940. Return: AX = BIOS equipment list word (see #03215)
  4941. Note:    this interrupt is identical to INT 11 on the Tandy 2000
  4942. SeeAlso: INT 11"EQUIPMENT",INT 4A"Tandy 2000",INT 4C"Tandy 2000"
  4943.  
  4944. Bitfields for Tandy 2000 BIOS equipment list:
  4945. Bit(s)    Description    (Table 03215)
  4946.  0    reserved
  4947.  1    monochrome graphics installed
  4948.  2    graphics with color option installed
  4949.  3    floppy disk drive 1 installed
  4950.  4    floppy disk drive 2 installed
  4951.  5    hard disk drive 1 installed
  4952.  6    hard disk drive 2 installed
  4953.  7    unused
  4954.  8    black and white monitor
  4955.  9    color monitor
  4956.  12-10    reserved
  4957.  13    printer installed
  4958.  14    reserved
  4959.  15    unused
  4960. SeeAlso: #00226 at INT 11
  4961. --------O-4B---------------------------------
  4962. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  4963.     AL = function code
  4964.     BL = first parameter
  4965.     BH = second parameter (if needed)
  4966. Return: BL = first return parameter
  4967.     BH = second return parameter
  4968.     CF depends on function
  4969. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  4970. --------b-4B00-------------------------------
  4971. INT 4B - TI Professional PC - PARALLEL PORT - OUTPUT CHARACTER
  4972.     AH = 00h
  4973.     DL = printer number (00h)
  4974.     AL = character to print
  4975. Return: AH = printer status (see #03216)
  4976. Note:    on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
  4977.       TI hook INT 4B and handle requests for DL<>00h
  4978. SeeAlso: AH=01h,AH=02h,INT 17/AH=00h
  4979. SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
  4980. SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
  4981.  
  4982. Bitfields for TI Professional PC printer status:
  4983. Bit(s)    Description    (Table 03216)
  4984.  0    timeout (function 00h only)
  4985.  3-1    unused
  4986.  4    busy
  4987.  5    paper out
  4988.  6    on-line (selected)
  4989.  7    fault
  4990. --------b-4B01-------------------------------
  4991. INT 4B - TI Professional PC - PARALLEL PORT - INITIALIZE PRINTER
  4992.     AH = 01h
  4993.     DL = printer number (00h)
  4994. Return: AH = printer status (see #03216)
  4995. Note:    on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
  4996.       TI hook INT 4B and handle requests for DL<>00h
  4997. SeeAlso: AH=00h,AH=02h,INT 17/AH=01h
  4998. --------b-4B02-------------------------------
  4999. INT 4B - TI Professional PC - PARALLEL PORT - GET PRINTER STATUS
  5000.     AH = 02h
  5001.     DL = printer number (00h)
  5002. Return: AH = printer status (see #03216)
  5003. Note:    on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
  5004.       TI hook INT 4B and handle requests for DL<>00h
  5005. SeeAlso: AH=00h,AH=01h,INT 17/AH=02h
  5006. --------d-4B80-------------------------------
  5007. INT 4B - IBM SCSI interface
  5008.     AH = 80h
  5009.     AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
  5010.     further details not yet available
  5011. --------d-4B8102DX0000-----------------------
  5012. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  5013.     AX = 8102h
  5014.     DX = 0000h
  5015. Return: CF clear if successful
  5016.         AH = major version number
  5017.         AL = minor version number
  5018.         BX = product number (see #03217)
  5019.         CX = product revision number
  5020.         always 0000h for QMAPS and HPMM.SYS
  5021.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  5022.         DX = flags (see #03219)
  5023.         SI:DI = maximum DMA buffer size
  5024.     CF set on error
  5025.         AL = error code (see #03218)
  5026. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  5027.       apparently not always the case
  5028. SeeAlso: INT 2C/AX=002Bh,INT 31/AX=0400h,MEM 0040h:007Bh"4Bh"
  5029. Index:    installation check;Virtual DMA Specification
  5030.  
  5031. (Table 03217)
  5032. Values for VDS product number:
  5033.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  5034.  0001h    for Microsoft's EMM386.EXE
  5035.  0003h    for Windows 3.x WIN386.EXE
  5036.  0300h    OS/2 (all versions to date)
  5037.  0EDCh    for DR DOS 6.0 EMM386.SYS
  5038.  4560h    ("E`") for Qualitas' 386MAX
  5039.  4D43h    ("MC") for V Communications' Memory Commander
  5040.  5145h    ("QE") for Quarterdeck's QEMM-386
  5041.  524Dh    ("RM") for Helix's Netroom RM386
  5042.  
  5043. (Table 03218)
  5044. Values for VDS error code:
  5045.  01h    region not in contiguous memory
  5046.  02h    region crossed a physical alignment boundary
  5047.  03h    unable to lock pages
  5048.  04h    no buffer available
  5049.  05h    region too large for buffer
  5050.  06h    buffer currently in use
  5051.  07h    invalid memory region
  5052.  08h    region was not locked
  5053.  09h    number of physical pages greater than table length
  5054.  0Ah    invalid buffer ID
  5055.  0Bh    copy out of buffer range
  5056.  0Ch    invalid DMA channel number
  5057.  0Dh    disable count overflow
  5058.  0Eh    disable count underflow
  5059.  0Fh    function not supported
  5060.  10h    reserved flag bits set in DX
  5061.  
  5062. Bitfields for VDS flags:
  5063. Bit(s)    Description    (Table 03219)
  5064.  0    PC/XT bus (DMA in first megabyte only)
  5065.  1    physical buffer/remap region in first megabyte
  5066.  2    automatic remap enabled
  5067.  3    all memory is physically contiguous
  5068.  4-15    reserved (zero)
  5069. --------d-4B8103-----------------------------
  5070. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  5071.     AX = 8103h
  5072.     DX = flags (see #03220)
  5073.     ES:DI -> DMA descriptor structure (see #03221,#03222,#03223)
  5074. Return: CF clear if successful
  5075.         DDS physical address field filled in
  5076.         DDS buffer ID field filled (0000h if no buffer allocated)
  5077.     CF set on error
  5078.         AL = error code (see #03218)
  5079.         DDS region size field filled wth maximum contiguous length in bytes
  5080. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  5081.       in enhanced mode
  5082.     Windows 3.0 in enhanced mode does not return a correct code on error
  5083. SeeAlso: AX=8104h,AX=8105h
  5084.  
  5085. Bitfields for VDS flags:
  5086. Bit(s)    Description    (Table 03220)
  5087.  0    reserved (zero)
  5088.  1    data should be copied into buffer (ignored if 2 set)
  5089.  2    buffer should not be allocated if region noncontiguous or crosses
  5090.       physical alignment boundary specified by 4-5
  5091.  3    don't attempt automatic remap
  5092.  4    region must not cross 64K physical alignment boundary
  5093.  5    region must not cross 128K physical alignment boundary
  5094.  6-15    reserved (zero)
  5095.  
  5096. Format of DMA descriptor structure (DDS):
  5097. Offset    Size    Description    (Table 03221)
  5098.  00h    DWORD    region size
  5099.  04h    DWORD    offset
  5100.  08h    WORD    segment/selector
  5101.  0Ah    WORD    buffer ID
  5102.  0Ch    DWORD    physical address
  5103.  
  5104. Format of Extended DMA descriptor structure (EDDS):
  5105. Offset    Size    Description    (Table 03222)
  5106.  00h    DWORD    region size
  5107.  04h    DWORD    offset
  5108.  08h    WORD    segment/selector
  5109.  0Ah    WORD    reserved
  5110.  0Ch    WORD    number available
  5111.  0Eh    WORD    number used
  5112.  10h    DWORD    region 0 physical address
  5113.  14h    DWORD    region 0 size in bytes
  5114.  18h    DWORD    region 1 physical address
  5115.  1Ch    DWORD    region 1 size in bytes
  5116.     ...
  5117.  
  5118. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  5119. Offset    Size    Description    (Table 03223)
  5120.  00h    DWORD    region size
  5121.  04h    DWORD    offset
  5122.  08h    WORD    segment/selector
  5123.  0Ah    WORD    reserved
  5124.  0Ch    WORD    number available
  5125.  0Eh    WORD    number used
  5126.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  5127.  14h    DWORD    page table entry 1
  5128.     ...
  5129. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  5130.       is present and locked
  5131. --------d-4B8104-----------------------------
  5132. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  5133.     AX = 8104h
  5134.     DX = flags
  5135.         bit 0: reserved (zero)
  5136.         bit 1: data should be copied out of buffer
  5137.         bits 2-15 reserved (zero)
  5138.     ES:DI -> DMA descriptor structure (see #03221,#03222) with region size,
  5139.           physical address, and buffer ID fields set
  5140. Return: CF clear if successful
  5141.         DDS physical address field set
  5142.         DDS buffer ID field set (0000h if no buffer allocated)
  5143.     CF set on error
  5144.         AL = error code (see #03218)
  5145.         DDS region size field filled wth maximum contiguous length in bytes
  5146. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  5147.       a segment
  5148. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  5149. SeeAlso: AX=8103h,AX=8106h
  5150. --------d-4B8105-----------------------------
  5151. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  5152.     AX = 8105h
  5153.     DX = flags (see #03224)
  5154.     ES:DI -> Extended DMA descriptor structure (see #03222,#03223)
  5155.           region size, linear segment, linear offset, and number avail
  5156.           fields set
  5157. Return: CF clear if successful
  5158.         EDDS number used field set
  5159.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  5160.     CF set on error
  5161.         AL = error code (see #03218)
  5162.         EDDS region size field filled with max length in bytes that can be
  5163.           locked and described in the EDDS table
  5164. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  5165.       page address for pages which were originally not present
  5166. SeeAlso: AX=8103h,AX=8106h
  5167.  
  5168. Bitfields for VDS flags:
  5169. Bit(s)    Description    (Table 03224)
  5170.  0-5    reserved (zero)
  5171.  6    EDDS should be returned with page table entries
  5172.  7    only present pages should be locked (not-present pages receive entry
  5173.       of 0000h)
  5174.  8-15    reserved (zero)
  5175. --------d-4B8106-----------------------------
  5176. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  5177.     AX = 8106h
  5178.     DX = flags (see #03225)
  5179.     ES:DI -> Extended DMA descriptor structure (see #03222,#03223) returned
  5180.           by AX=8105h
  5181. Return: CF clear if successful
  5182.     CF set on error
  5183.         AL = error code (see #03218)
  5184. Note:    according to the Microsoft version of the VDS specification, the
  5185.       actual scatter/gather list is ignored, while according to the IBM
  5186.       version of the specification, "the result of a LOCK operation"
  5187.       must be provided to this function
  5188. SeeAlso: AX=8104h,AX=8105h
  5189.  
  5190. Bitfields for VDS flags:
  5191. Bit(s)    Description    (Table 03225)
  5192.  0-5    reserved (zero)
  5193.  6    EDDS contains page table entries
  5194.  7    EDDS may contain not-present pages (entry = 0000h)
  5195.  8-15    reserved (zero)
  5196. --------d-4B8107-----------------------------
  5197. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  5198.     AX = 8107h
  5199.     DX = flags
  5200.         bit 0: reserved (zero)
  5201.         bit 1: data should be copied into buffer
  5202.         bits  2-15 reserved (zero)
  5203.     ES:DI -> DMA descriptor structure (see #03221) with region size set
  5204.           (also region offset and region segment if DX bit 1 set)
  5205. Return: CF clear if successful
  5206.         DDS physical address and buffer ID set
  5207.         DDS region size filled with length of buffer
  5208.     CF set on error
  5209.         AL = error code (see #03218)
  5210. SeeAlso: AX=8108h
  5211. --------d-4B8108-----------------------------
  5212. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  5213.     AX = 8108h
  5214.     DX = flags
  5215.         bit 0: reserved (zero)
  5216.         bit 1: data should be copied out of buffer
  5217.         bits 2-15 reserved (zero)
  5218.     ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID set
  5219.           (also region size/region offset/segment if DX bit 1 set)
  5220. Return: CF clear if successful
  5221.     CF set on error
  5222.         AL = error code (see #03218)
  5223. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  5224.       for this function to work correctly
  5225. SeeAlso: AX=8107h
  5226. --------d-4B8109DX0000-----------------------
  5227. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  5228.     AX = 8109h
  5229.     DX = 0000h
  5230.     ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID,
  5231.           region segment/offset, and region size fields set
  5232.     BX:CX = starting offset into DMA buffer
  5233. Return: CF clear if successful
  5234.     CF set on error
  5235.         AL = error code (see #03218)
  5236. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  5237. SeeAlso: AX=810Ah
  5238. --------d-4B810ADX0000-----------------------
  5239. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  5240.     AX = 810Ah
  5241.     DX = 0000h
  5242.     ES:DI -> DMA descriptor structure (see #03221,#03223) with buffer ID,
  5243.           region segment/offset, and region size fields set
  5244.     BX:CX = starting offset into DMA buffer
  5245. Return: CF clear if successful
  5246.     CF set on error
  5247.         AL = error code (see #03218)
  5248. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  5249. SeeAlso: AX=8109h
  5250. --------d-4B810B-----------------------------
  5251. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  5252.     AX = 810Bh
  5253.     BX = DMA channel number
  5254.     DX = 0000h
  5255. Return: CF clear if successful
  5256.     CF set on error
  5257.         AL = error code (see #03218)
  5258. SeeAlso: AX=810Ch
  5259. --------d-4B810C-----------------------------
  5260. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  5261.     AX = 810Ch
  5262.     BX = DMA channel number
  5263.     DX = 0000h
  5264. Return: CF clear if successful
  5265.         ZF set if disable count decremented to zero
  5266.     CF set on error
  5267.         AL = error code (see #03218)
  5268. SeeAlso: AX=810Bh
  5269. --------Q-4B810D-----------------------------
  5270. INT 4B - QEMM-386 - BUG
  5271.     AX = 810Dh
  5272. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  5273.       call
  5274. --------h-4C---------------------------------
  5275. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  5276. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  5277. --------b-4C---------------------------------
  5278. INT 4C - TI Professional PC - CLOCK/ANALOG INTERFACE
  5279.     no details available
  5280. SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
  5281. SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
  5282. SeeAlso: INT 58"TI Professional"
  5283. --------b-4C---------------------------------
  5284. INT 4C - Tandy 2000 - GET MEMORY SIZE
  5285. Return: AX = kilobytes of contiguous memory starting at 0
  5286. Note:    this interrupt is identical to INT 12 on the Tandy 2000
  5287. SeeAlso: INT 12"BIOS",INT 4A"Tandy 2000",INT 4B"Tandy 2000",INT 51"Tandy 2000"
  5288. --------O-4C---------------------------------
  5289. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  5290.     DS:BX -> CR-terminated command string
  5291. Return: FLAGS destroyed
  5292. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  5293. --------h-4D---------------------------------
  5294. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  5295. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  5296. --------s-4D---------------------------------
  5297. INT 4D - IBM - M-Audio Adapter SUPPORT
  5298.     no details available; supposedly documented in IBM form G571-0203-01
  5299. --------B-4D00-------------------------------
  5300. INT 4D - TI Professional PC - DISK - RESET DISK SYSTEM
  5301.     AH = 00h
  5302.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  5303. Return: AH = status (see #00234 at INT 13/AH=01h)
  5304.     CF clear if successful (returned AH=00h)
  5305.     CF set on error
  5306. Note:    this function is the same as INT 13/AH=00h on a standard PC BIOS
  5307. SeeAlso: AH=01h,AH=02h,AH=08h,AH=0Bh,INT 13/AH=00h,INT 46"TI Professional"
  5308. SeeAlso: INT 48/AH=00h"TI Professional",INT 4A/AH=00h"TI"
  5309. --------B-4D01-------------------------------
  5310. INT 4D - TI Professional PC - DISK - GET STATUS OF LAST OPERATION
  5311.     AH = 01h
  5312.     DL = drive (bit 7 set for hard disk)
  5313. Return: CF clear if status unchanged
  5314.     CF set if status changed since last call
  5315.     AH = 00h
  5316.     AL = status of previous operation (see #00234 at INT 13/AH=01h)
  5317. Notes:    this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
  5318.     the TI's BIOS tranparently performs a number of retries, and an error
  5319.       status is only reported if all of the retries fail.  To get the error
  5320.       status if the operation succeeded on a retry, use AH=07h instead
  5321. SeeAlso: AH=00h,AH=07h,INT 13/AH=01h
  5322. --------B-4D02-------------------------------
  5323. INT 4D - TI Professional PC - DISK - READ SECTOR(S) INTO MEMORY
  5324.     AH = 02h
  5325.     AL = number of sectors to read (must be nonzero)
  5326.     CH = low eight bits of cylinder number
  5327.     CL = sector number 1-63 (bits 0-5)
  5328.          high two bits of cylinder (bits 6-7, hard disk only)
  5329.     DH = head number
  5330.     DL = drive number (bit 7 set for hard disk)
  5331.     ES:BX -> data buffer
  5332. Return: CF set on error
  5333.         if AH = 11h (corrected ECC error), AL = burst length
  5334.     CF clear if successful
  5335.     AH = status (see #00234 at INT 13/AH=01h)
  5336.     AL = number of sectors transferred
  5337.     ES:BX -> buffer for last sector processed (including one with errors)
  5338. SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,INT 13/AH=02h
  5339. --------B-4D03-------------------------------
  5340. INT 4D - TI Professional PC - DISK - WRITE SECTOR(S) FROM MEMORY
  5341.     AH = 03h
  5342.     AL = number of sectors to write (must be nonzero)
  5343.     CH = low eight bits of cylinder number
  5344.     CL = sector number 1-63 (bits 0-5)
  5345.          high two bits of cylinder (bits 6-7, hard disk only)
  5346.     DH = head number
  5347.     DL = drive number (bit 7 set for hard disk)
  5348.     ES:BX -> buffer containing data
  5349. Return: CF set on error
  5350.         if AH = 11h (corrected ECC error), AL = burst length
  5351.     CF clear if successful
  5352.     AH = status (see #00234 at INT 13/AH=01h)
  5353.     AL = number of sectors transferred
  5354.     ES:BX -> buffer for last sector processed (including one with errors)
  5355. SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=03h
  5356. --------B-4D04-------------------------------
  5357. INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR CRC(S)
  5358.     AH = 04h
  5359.     AL = number of sectors to verify (must be nonzero)
  5360.     CH = low eight bits of cylinder number
  5361.     CL = sector number 1-63 (bits 0-5)
  5362.          high two bits of cylinder (bits 6-7, hard disk only)
  5363.     DH = head number
  5364.     DL = drive number (bit 7 set for hard disk)
  5365.     ES:BX -> data buffer
  5366. Return: CF set on error
  5367.         if AH = 11h (corrected ECC error), AL = burst length
  5368.     CF clear if successful
  5369.     AH = status (see #00234 at INT 13/AH=01h)
  5370.     AL = number of sectors transferred
  5371.     ES:BX -> buffer for last sector processed (including one with errors)
  5372. Note:    even though no data is transferred, ES:BX must still be valid
  5373. SeeAlso: AH=00h,AH=01h,AH=02h,AH=06h,INT 13/AH=04h
  5374. --------B-4D05-------------------------------
  5375. INT 4D - TI Professional PC - DISK - NOP
  5376.     AH = 05h
  5377. Note:    on the TI Pro, FORMAT.COM contains direct port I/O commands to perform
  5378.       disk formatting, rather than using the BIOS
  5379. --------B-4D06-------------------------------
  5380. INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR(S)
  5381.     AH = 06h
  5382.     AL = number of sectors to verify (must be nonzero)
  5383.     CH = low eight bits of cylinder number
  5384.     CL = sector number 1-63 (bits 0-5)
  5385.          high two bits of cylinder (bits 6-7, hard disk only)
  5386.     DH = head number
  5387.     DL = drive number (bit 7 set for hard disk)
  5388.     ES:BX -> data buffer
  5389. Return: CF set on error
  5390.         if AH = 11h (corrected ECC error), AL = burst length
  5391.     CF clear if successful
  5392.     AH = status (see #00234 at INT 13/AH=01h)
  5393.     AL = number of sectors transferred
  5394.     ES:BX -> buffer for last sector processed (including one with errors)
  5395. Note:    even though no data is transferred, ES:BX must still be valid because
  5396.       an actual comparison with disk data is performed, not just the CRC
  5397.       check of the standard PC BIOS or INT 4D/AH=04h
  5398. SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=04h
  5399. --------B-4D07-------------------------------
  5400. INT 4D - TI Professional PC - DISK - GET RETRY STATUS OF LAST OPERATION
  5401.     AH = 07h
  5402.     DL = drive (bit 7 set for hard disk)
  5403. Return: CF clear if status unchanged
  5404.     CF set if status changed since last call
  5405.     AH = 00h
  5406.     AL = status of previous operation (see #00234 at INT 13/AH=01h)
  5407. Notes:    this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
  5408.     the TI's BIOS tranparently performs a number of retries; this function
  5409.       returns the error status of a failed operation even if the operation
  5410.       succeeded on a retry
  5411. SeeAlso: AH=00h,AH=01h,INT 13/AH=01h
  5412. --------B-4D08-------------------------------
  5413. INT 4D - TI Professional PC - DISK - SET STANDARD DEVICE INTERFACE TABLE
  5414.     AH = 08h
  5415.     DL = drive number (00h-03h)
  5416.     AL = drive type
  5417.         00h single-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
  5418.         01h double-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
  5419.         02h single-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
  5420.         03h double-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
  5421. Return: nothing???
  5422. SeeAlso: AH=00h,AH=09h
  5423. --------B-4D09-------------------------------
  5424. INT 4D - TI Professional PC - DISK - SET DEVICE INTERFACE TABLE ADDRESS
  5425.     AH = 09h
  5426.     DL = drive number (00h-07h)
  5427.     ES:BX -> Device Interface Table (see #03226)
  5428. Return: nothing???
  5429. SeeAlso: AH=00h,AH=08h,AH=0Ah,INT 1E
  5430.  
  5431. Format of TI Professional PC Device Interface Table:
  5432. Offset    Size    Description    (Table 03226)
  5433.  00h    DWORD    -> entry point for disk routine
  5434.  04h    WORD    bytes per sector
  5435.  06h    BYTE    sectors per track
  5436.  07h    BYTE    number of heads
  5437.  08h    BYTE    number of cylinders
  5438.  09h    BYTE    retry count
  5439.  0Ah    BYTE    precompensation start
  5440. SeeAlso: #01264 at INT 1E
  5441. --------B-4D0A-------------------------------
  5442. INT 4D - TI Professional PC - DISK - GET DEVICE INTERFACE TABLE ADDRESS
  5443.     AH = 0Ah
  5444.     DL = drive number (00h-07h)
  5445. Return: AH = status
  5446.     ES:BX -> Device Interface Table (see #03226)
  5447. SeeAlso: AH=00h,AH=08h,AH=09h,INT 1E
  5448. --------B-4D0B-------------------------------
  5449. INT 4D - TI Professional PC - DISK - TURN OFF ALL DRIVES
  5450.     AH = 0Bh
  5451. Return: AH = 00h
  5452. Note:    used for diagnostics or to conserve power
  5453. SeeAlso: AH=00h
  5454. --------h-4E---------------------------------
  5455. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  5456. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  5457. --------b-4E00-------------------------------
  5458. INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS DATE
  5459.     AH = 00h
  5460.     BX = number of days since January 1, 1980
  5461. Return: nothing
  5462. SeeAlso: AH=01h,AH=02h
  5463. SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
  5464. SeeAlso: INT 4A/AH=00h"TI",INT 4F"TI Professional"
  5465. --------b-4E01-------------------------------
  5466. INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS TIME
  5467.     AH = 01h
  5468.     CH = hours
  5469.     CL = minutes
  5470.     DH = seconds
  5471.     DL = hundredths
  5472. Return: nothing
  5473. Note:    the BIOS does not validate the data passed to this function
  5474. SeeAlso: AH=00h,AH=02h
  5475. --------b-4E02-------------------------------
  5476. INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - GET BIOS DATA AND TIME
  5477.     AH = 02h
  5478. Return: AX = number of days since January 1, 1980
  5479.     CH = hours
  5480.     CL = minutes
  5481.     DH = seconds
  5482.     DL = hundredths
  5483. SeeAlso: AH=00h,AH=01h
  5484. --------h-4F---------------------------------
  5485. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  5486. SeeAlso: INT 4E"Z100"
  5487. --------b-4F---------------------------------
  5488. INT 4F - TI Professional PC - SYSTEM CONFIGURATION CALL
  5489. Return: AX = system configuration word (see #03227)
  5490.     BX = size of contiguous DOS memory in paragraphs
  5491. SeeAlso: INT 11"BIOS",INT 12"BIOS",INT 40"TI Professional",INT 48/AH=09h
  5492. SeeAlso: INT 49/AH=01h"TI",INT 4B"TI Professional",INT 4D/AH=00h
  5493. SeeAlso: INT 4E"TI Professional"
  5494.  
  5495. Bitfields for TI Professional PC system configuration:
  5496. Bit(s)    Description    (Table 03227)
  5497.  0    floppy drive 0 (A:, internal) installed
  5498.  1    floppy drive 1 (B:, internal) installed
  5499.  2    floppy drive 2 (C:, external) installed
  5500.  3    floppy drive 3 (D:, external) installed
  5501.  4    drive A: is 96tpi (80 tracks)
  5502.  5    drive A: is double-sided
  5503.  6    60 Hz power instead of 50 Hz
  5504.  7    hard disk (E: or E:/F:) installed
  5505.  8    serial port 1 installed
  5506.  9    serial port 2 installed
  5507.  10    serial port 3 installed
  5508.  11    serial port 4 installed
  5509.  14-12    installed graphics RAM
  5510.     000 none (text-only system)
  5511.     001 bank A only (graphics limited to 2 of 8 colors)
  5512.     111 banks A/B/C (graphics supports 8 of 8 colors)
  5513.  15    clock/analog board installed
  5514. --------d-4F8100-----------------------------
  5515. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  5516.     AX = 8100h
  5517.     ES:BX -> CAM Control Block (CCB) (see #03229)
  5518. Return: AH = status
  5519.         00h successful
  5520.         01h invalid CCB address (0000h:0000h)
  5521. Note:    the SCSI Interface Module (SIM) may complete the requested function
  5522.       and invoke the completion callback function before this call returns
  5523. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  5524.  
  5525. (Table 03228)
  5526. Values for CAM function code:
  5527.  00h    NOP
  5528.  01h    execute SCSI I/O
  5529.  02h    get device type
  5530.  03h    path inquiry
  5531.  04h    release SIM queue
  5532.  05h    set async callback
  5533.  06h    set device type
  5534.  07h-0Fh reserved
  5535.  10h    abort SCSI command
  5536.  11h    reset SCSI bus
  5537.  12h    reset SCSI device
  5538.  13h    terminate I/O process
  5539.  14h-1Fh reserved
  5540.  20h    engine inquiry
  5541.  21h    execute engine request
  5542.  22h-2Fh reserved
  5543.  30h    enable logical unit number
  5544.  31h    execute target I/O
  5545.  32h-7Fh reserved
  5546.  80h-FFh vendor-specific functions
  5547.  
  5548. Format of CAM Control Block:
  5549. Offset    Size    Description    (Table 03229)
  5550.  00h    DWORD    physical address of this CCB
  5551.  04h    WORD    CAM control block length
  5552.  06h    BYTE    function code (see #03228)
  5553.  07h    BYTE    CAM status (see #03232)
  5554.  08h    BYTE    SCSI status
  5555.  09h    BYTE    path ID (FFh = XPT)
  5556.  0Ah    BYTE    target ID
  5557.  0Bh    BYTE    logical unit number
  5558.  0Ch    WORD    CAM flags (see #03230)
  5559.  0Eh    BYTE    CAM address flags (see #03231)
  5560.  0Fh    BYTE    target-mode flags (see #03233)
  5561. ---function 02h---
  5562.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  5563.  14h    BYTE    peripheral device type of target logical unit number
  5564. ---function 03h---
  5565.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  5566.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  5567.  11h    BYTE    SCSI capabilities (see #03234)
  5568.  12h    BYTE    target mode support
  5569.         bit 7: processor mode
  5570.         bit 6: phase-cognizant mode
  5571.         bit 5-0: reserved
  5572.  13h    BYTE    miscellaneous flags
  5573.         bit 7: scanned high to low instead of low to high
  5574.         bit 6: removables not included in scan
  5575.         bit 5: inquiry data not kept by XPT
  5576.         bits 4-0: reserved
  5577.  14h    WORD    engine count
  5578.  16h 14 BYTEs    vendor-specific data
  5579.  24h    DWORD    size of private data area
  5580.  28h    DWORD    asynchronous event capabilities (see #03235)
  5581.  2Ch    BYTE    highest path ID assigned
  5582.  2Dh    BYTE    SCSI device ID of initiator
  5583.  2Eh  2 BYTEs    reserved
  5584.  30h 16 BYTEs    SIM vendor ID
  5585.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  5586.  50h  4 BYTEs    operating-system dependant usage
  5587. ---functions 00h,04h,11h,12h---
  5588.  no additional fields
  5589. ---function 05h---
  5590.  10h    DWORD    asynchronous event enables (refer to function 03h above)
  5591.  14h    DWORD    pointer to asynchronous callback routine (see #03241)
  5592.  18h    DWORD    pointer to peripheral driver buffer
  5593.  1Ch    BYTE    size of peripheral buffer
  5594. ---function 06h---
  5595.  10h    BYTE    peripheral device type of target
  5596. ---functions 10h,13h---
  5597.  10h    DWORD    pointer to CCB to be aborted
  5598. ---function 20h---
  5599.  10h    WORD    engine number
  5600.  12h    BYTE    engine type
  5601.         00h buffer memory
  5602.         01h lossless compression
  5603.         02h lossy compression
  5604.         03h encryption
  5605.  13h    BYTE    engine algorithm ID
  5606.         00h vendor-unique
  5607.         01h LZ1 variation 1 (STAC)
  5608.         02h LZ2 variation 1 (HP DCZL)
  5609.         03h LZ2 variation 2 (Infochip)
  5610.  14h    DWORD    engine memory size
  5611. ---function 21h---
  5612.  10h    DWORD    pointer to peripheral driver
  5613.  14h  4 BYTEs    reserved
  5614.  18h    DWORD    OS-dependent request-mapping info
  5615.  1Ch    DWORD    address of completion callback routine
  5616.  20h    DWORD    pointer to scatter/gather list or data buffer
  5617.  24h    DWORD    length of data transfer
  5618.  28h    DWORD    pointer to engine buffer data
  5619.  2Ch  2 BYTEs    reserved
  5620.  2Eh    WORD    number of scatter/gather entries
  5621.  30h    DWORD    maximum destination data length
  5622.  34h    DWORD    length of destination data
  5623.  38h    DWORD    source residual length
  5624.  3Ch 12 BYTEs    reserved
  5625.  48h    DWORD    OS-dependent timeout value
  5626.  4Ch  4 BYTEs    reserved
  5627.  50h    WORD    engine number
  5628.  52h    WORD    vendor-unique flags
  5629.  54h  4 BYTEs    reserved
  5630.  58h  N BYTEs    private data area for SIM
  5631. ---function 30h---
  5632.  10h    WORD    group 6 vendor-unique CDB length
  5633.  12h    WORD    group 7 vendor-unique CDB length
  5634.  14h    DWORD    pointer to target CCB list
  5635.  18h    WORD    number of target CCBs
  5636. ---other functions---
  5637.  10h    DWORD    pointer to peripheral driver
  5638.  14h    DWORD    pointer to next CCB
  5639.  18h    DWORD    OS-dependent request mapping information
  5640.  1Ch    DWORD    address of completion callback routine (see #03240)
  5641.  20h    DWORD    pointer to scatter/gather list or data buffer
  5642.  24h    DWORD    length of data transfer
  5643.  28h    DWORD    pointer to sense info buffer
  5644.  2Ch    BYTE    length of sense info buffer
  5645.  2Dh    BYTE    CDB length
  5646.  2Eh    WORD    number of scatter/gather entries
  5647.         scatter/gather list is array of 2N DWORDs, each pair specifying
  5648.           the address and length of a data block
  5649.  30h  4 BYTEs    vendor-specific data
  5650.  34h    BYTE    (ret) SCSI status
  5651.  35h    BYTE    (ret) auto-sense residual length
  5652.  36h  2 BYTEs    reserved
  5653.  38h    DWORD    (ret) residual length
  5654.  40h 12 BYTEs    Command Descriptor Block (CDB) (see #03236,#03237,#03238)
  5655.  44h    DWORD    OS-dependent timeout value
  5656.  48h    DWORD    pointer to message buffer
  5657.  4Ch    WORD    length of message buffer
  5658.  4Eh    WORD    vendor-unique flags
  5659.  50h    BYTE    tag queue action
  5660.  51h  3 BYTEs    reserved
  5661.  54h  N BYTEs    private data area for SIM
  5662.  
  5663. Bitfields for CAM flags:
  5664. Bit(s)    Description    (Table 03230)
  5665.  0    CDB is a pointer
  5666.  1    tagged queue action enable
  5667.  2    linked CDB
  5668.  3    disable callback on completion
  5669.  4    scatter/gather
  5670.  5    disable autosense
  5671.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  5672.  9-8    reserved
  5673.  10    engine synchronize
  5674.  11    SIM queue freeze
  5675.  12    SIM queue priority
  5676.     1 head insertion
  5677.     0 tail insertion (normal)
  5678.  13    disable synchronous transfers    \ mutually
  5679.  14    initiate synchronous transfers    / exclusive
  5680.  15    disable disconnect
  5681.  
  5682. Bitfields for CAM address flags:
  5683. Bit(s)    Description    (Table 03231)
  5684.  7    SG list/data (0 = host, 1 = engine)
  5685.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  5686.  5    SG list/data
  5687.  4    sense buffer
  5688.  3    message buffer
  5689.  2    next CCB
  5690.  1    callback on completion
  5691.  0    reserved
  5692.  
  5693. (Table 03232)
  5694. Values for CAM status:
  5695.  00h    request in progress
  5696.  01h    request successful
  5697.  02h    host aborted request
  5698.  03h    unable to abort request
  5699.  04h    request completed with error
  5700.  05h    CAM is busy
  5701.  06h    invalid request
  5702.  07h    invalid path ID
  5703.  08h    no such SCSI device
  5704.  09h    unable to terminate I/O process
  5705.  0Ah    timeout on target selection
  5706.  0Bh    timeout on command
  5707.  0Dh    receive message rejection
  5708.  0Eh    sent/received SCSI bus reset
  5709.  0Fh    detected uncorrectable parity error
  5710.  10h    Autosense request failed
  5711.  11h    no HBA detected
  5712.  12h    data over/underrun
  5713.  13h    bus freed unexpectedly
  5714.  14h    target bus phase sequence failure
  5715.  15h    CCB too small
  5716.  16h    requested capability not available
  5717.  17h    sent bus device reset
  5718.  18h    terminate I/O process
  5719.  38h    invalid LUN
  5720.  39h    invalid target ID
  5721.  3Ah    unimplemented function
  5722.  3Bh    nexus not established
  5723.  3Ch    invalid initiator ID
  5724.  3Dh    received SCSI Command Descriptor Block
  5725.  3Eh    LUN already enabled
  5726.  3Fh    SCSI bus busy
  5727. Note:    bit 6 set to indicate frozen SIM queue
  5728.     bit 7 set to indicate valid autosense
  5729.  
  5730. Bitfields for CAM target-mode flags:
  5731. Bit(s)    Description    (Table 03233)
  5732.  7    data buffer valid
  5733.  6    status valid
  5734.  5    message buffer valid
  5735.  4    reserved
  5736.  3    phase-cognizant mode
  5737.  2    target CCB available
  5738.  1    disable autodisconnect
  5739.  0    disable autosave/restore
  5740.  
  5741. Bitfields for SCSI capabilities:
  5742. Bit(s)    Description    (Table 03234)
  5743.  7    modify data pointers
  5744.  6    wide bus (32 bits)
  5745.  5    wide bus (16 bits)
  5746.  4    synchronous transfers
  5747.  3    linked commands
  5748.  2    reserved
  5749.  1    tagged queueing
  5750.  0    soft reset
  5751.  
  5752. Bitfields for CAM asynchronous event capabilities:
  5753. Bit(s)    Description    (Table 03235)
  5754.  31-24    vendor-specific
  5755.  23-8    reserved
  5756.  7    new devices found during rescan
  5757.  6    SIM module deregistered
  5758.  5    SIM module registered
  5759.  4    sent bus device reset to target
  5760.  3    SCSI AEN
  5761.  2    reserved
  5762.  1    unsolicited reselection
  5763.  0    unsolicited SCSI bus reset
  5764.  
  5765. Format of Six-Byte SCSI Command Descriptor Block (CDB):
  5766. Offset    Size    Description    (Table 03236)
  5767.  00h    BYTE    operation code (see #03239)
  5768.  01h    BYTE    logical unit number (bits 7-5), SCSI-1/SCSI-2
  5769.         MSB of logical block address (bits 4-0)
  5770.  02h    WORD    logical block address (low word)
  5771.  04h    BYTE    transfer length
  5772.  05h    BYTE    control byte
  5773. SeeAlso: #03237,#03238
  5774.  
  5775. Format of Ten-Byte SCSI Command Descriptor Block (CDB):
  5776. Offset    Size    Description    (Table 03237)
  5777.  00h    BYTE    operation code (see #03239)
  5778.  01h    BYTE    logical unit number (bits 7-5), SCSI-1/SCSI-2
  5779.         reserved in SCSI-3
  5780.  02h    DWORD    logical block address (low word)
  5781.  06h    BYTE    reserved
  5782.  07h    WORD    transfer length
  5783.  09h    BYTE    control byte
  5784. SeeAlso: #03236,#03238
  5785.  
  5786. Format of Twelve-Byte SCSI Command Descriptor Block (CDB):
  5787. Offset    Size    Description    (Table 03238)
  5788.  00h    BYTE    operation code (see #03239)
  5789.  01h    BYTE    logical unit number (bits 7-5), SCSI-1/SCSI-2
  5790.         reserved in SCSI-3
  5791.  02h    DWORD    logical block address (low word)
  5792.  06h    DWORD    transfer length
  5793.  0Ah    BYTE    reserved
  5794.  0Bh    BYTE    control byte
  5795. SeeAlso: #03236,#03237
  5796.  
  5797. (Table 03239)
  5798. Values for SCSI CDB operation code for direct-access devices:
  5799.  00h    Test Unit Ready
  5800.  01h    Rezero Unit
  5801.  03h    Request Sense
  5802.  04h    Format Unit
  5803.  07h    Reassign Blocks
  5804.  08h    Read (6-byte CDB)
  5805.  0Ah    Write (6-byte CDB)
  5806.  0Bh    Seek (6-byte CDB)
  5807.  12h    Inquiry
  5808.  15h    Mode Select (6-byte CDB)
  5809.  16h    Reserve
  5810.  17h    Release
  5811.  18h    Copy
  5812.  1Ah    Mode Sense (6-byte CDB)
  5813.  1Bh    Start/Stop Unit
  5814.  1Ch    Receive Diagnostic Results
  5815.  1Dh    Send Diagnostic
  5816.  1Eh    Prevent/Allow Medium Removal
  5817.  25h    Read Capacity
  5818.  28h    Read (10-byte CDB)
  5819.  2Ah    Write (10-byte CDB)
  5820.  2Bh    Seek (10-byte CDB)
  5821.  2Eh    Write and Verify
  5822.  2Fh    Verify
  5823.  30h    Search Data High
  5824.  31h    Search Data Equal
  5825.  32h    Search Data Low
  5826.  33h    Set Limits
  5827.  34h    Prefetch
  5828.  35h    Synchronize Cache
  5829.  36h    Lock/Unlock Cache
  5830.  37h    Read Defect Data
  5831.  39h    Compare
  5832.  3Ah    Copy and Verify
  5833.  3Bh    Write Buffer
  5834.  3Ch    Read Buffer
  5835.  3Eh    Read Long
  5836.  3Fh    Write Long
  5837.  40h    Change Definition
  5838.  41h    Write Same
  5839.  4Ch    Log Select
  5840.  4Dh    Log Sense
  5841.  55h    Mode Select (10-byte CDB)
  5842.  5Ah    Mode Sense (10-byte CDB)
  5843. SeeAlso: #03236,#03237,#03238
  5844.  
  5845. (Table 03240)
  5846. Values completion callback function is called with:
  5847.     interrupts disabled
  5848.     ES:BX -> completed CCB
  5849.  
  5850. (Table 03241)
  5851. Values asynchronous callback function is called with:
  5852.     AH = opcode
  5853.     AL = path ID generating callback
  5854.     DH = target ID causing event
  5855.     DL = LUN causing event
  5856.     CX = data byte count (if applicable)
  5857.     ES:BX -> data buffer (if applicable)
  5858. Return: all registers preserved
  5859. --------d-4F8200CX8765-----------------------
  5860. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  5861.     AX = 8200h
  5862.     CX = 8765h
  5863.     DX = CBA9h
  5864. Return: AH = 00h if installed
  5865.         CX = 9ABCh
  5866.         DX = 5678h
  5867.         ES:DI -> "SCSI_CAM"
  5868. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  5869. --------N-50---------------------------------
  5870. INT 50 - TIL Xpert AIM (X.25)
  5871.     AH = function
  5872. --------H-50---------------------------------
  5873. INT 50 - IRQ0 relocated by DESQview
  5874. Range:    INT 50 to INT F8, selected automatically
  5875. Notes:    this is the default location for older versions; DESQview v2.26+
  5876.       searches for unused ranges of interrupts and uses the lowest
  5877.       available range in its list for relocating these IRQs and the next
  5878.       lowest for relocating IRQ8-IRQ15
  5879.     a range of eight interrupts starting at a multiple of 8 is considered
  5880.       available if all vectors are identical and it has not been excluded
  5881.       with an /XB:nn commandline switch
  5882.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  5883.       are available, F8h and then 50h are used anyway)
  5884.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  5885.       are available, F8h and then F0h are used anyway)
  5886. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  5887. SeeAlso: INT D8"Screen Thief"
  5888. --------H-50---------------------------------
  5889. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  5890. SeeAlso: INT 51"IBM 3278"
  5891. --------H-50---------------------------------
  5892. INT 50 - IRQ0 relocated by OS/2 v1.x
  5893. SeeAlso: INT 51"OS/2"
  5894. ----------50---------------------------------
  5895. INT 50 - TI Professional PC - FATAL SOFTWARE ERROR TRAP
  5896. Desc:    the default handler generates a System Error message and halts the
  5897.       computer such that only Ctrl-Alt-Del can restart operation
  5898. Note:    documented as "for system use only"; intended for multi-tasking
  5899.       software
  5900. SeeAlso: INT 40"TI Professional",INT 4F"TI Professional"
  5901. SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
  5902. --------V-500000-----------------------------
  5903. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  5904.     AX = 0000h
  5905.     ES:BX -> name string or ES:0000h if none
  5906.     CH,CL = row,column of upper left corner
  5907.     DH,DL = row,column of lower right corner
  5908. Return: AX = window handle or
  5909.         0000h if not installed
  5910.         FFFFh on error
  5911. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  5912. --------V-500001-----------------------------
  5913. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  5914.     AX = 0001h
  5915.     DI = window handle
  5916. SeeAlso: AX=0000h
  5917. --------V-500002-----------------------------
  5918. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  5919.     AX = 0002h
  5920.     BL = character
  5921.     BH = attribute
  5922.     DL = column
  5923.     DH = row
  5924.     DI = window handle
  5925. Return: AX = status
  5926.         0000h if successful
  5927.         FFFFh if outside window
  5928. SeeAlso: AX=0000h
  5929. --------l-500002-----------------------------
  5930. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  5931.     AX = 0002h
  5932.     ES:BX -> text string
  5933.     DH,DL = row,column of upper left corner
  5934.     DI = window handle
  5935. Return: AX = status
  5936.         0000h successful (text fits in window)
  5937.         FFFFh error
  5938. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  5939.       published in the June/July 1990 issue of PC Thuis Power magazine
  5940. --------V-500003-----------------------------
  5941. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  5942.     AX = 0003h
  5943.     ES:BX -> text string
  5944.     CX = string length (0000h if ASCIZ string)
  5945.     DL = position (FFh centered, else flush left)
  5946.     DH = starting row
  5947.     DI = window handle
  5948. Return: AX = status
  5949.         0000h successful
  5950.         FFFFh did not fit in window
  5951. --------l-500003-----------------------------
  5952. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  5953.     AX = 0003h
  5954.     ES:BX -> data to be written
  5955.     CX = number of bytes to write
  5956.     DS:SI -> filename
  5957. Return: AX = status
  5958.         0000h successful
  5959.         FFFFh error
  5960. SeeAlso: AX=0004h"Shell"
  5961. --------V-500004-----------------------------
  5962. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  5963.     AX = 0004h
  5964.     CH = type
  5965.         00h any key
  5966.         01h 'J' or 'N' (Dutch for yes/no)
  5967. Return: AX = key
  5968. SeeAlso: INT 16/AH=00h
  5969. --------l-500004-----------------------------
  5970. INT 50 - PC Thuis Organizer Shell - READ FILE
  5971.     AX = 0004h
  5972.     ES:BX -> buffer for data
  5973.     CX = number of bytes to read or 0000h for entire file
  5974.     DL = file type
  5975.         01h setting shell
  5976.         02h setting sterm
  5977.         03h INT21 file
  5978.     DS:SI -> filename
  5979. Return: AX = status
  5980.         0000h successful
  5981.         FFFFh error
  5982. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  5983.       is needed, a type number should be requested from him through the
  5984.       magazine:
  5985.         PC Thuis BV
  5986.         Spaarne 55
  5987.         2011 CE HAARLEM
  5988.         The Netherlands
  5989. SeeAlso: AX=0003h"Shell"
  5990. --------V-500005-----------------------------
  5991. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  5992.     AX = 0005h
  5993.     BL = new attribute
  5994.     CH,CL = row,column of upper left corner
  5995.     DH,DL = row,column of lower right corner
  5996.     DI = window handle
  5997. --------l-500005-----------------------------
  5998. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  5999.     AX = 0005h
  6000.     ES:BX -> prompt string (ES:0000h if no prompt)
  6001. Return: AX = key pressed
  6002.         0000h "J" (Dutch "Ja" = "Yes")
  6003.         FFFFh "N" (Dutch "Nee" = "No")
  6004. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  6005.       published in the June/July 1990 issue of PC Thuis Power magazine
  6006. SeeAlso: AX=0008h"PC Thuis"
  6007. --------V-500006-----------------------------
  6008. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  6009.     AX = 0006h
  6010.     ES:BX -> text string
  6011.     CH = type of input (see #03242)
  6012.     DH,DL = row,column of upper left corner
  6013.     DI = window handle
  6014. Return: AX = key which terminated entry
  6015.         0000h Enter
  6016.         0001h Esc
  6017.         0002h Down arrow
  6018.         0003h Up arrow
  6019.         0004h F10
  6020.  
  6021. (Table 03242)
  6022. Values for type of input to Vanderaart Text Windows:
  6023.  00h    everything
  6024.  01h    uppercase only
  6025.  02h    positive numbers
  6026.  03h    Dutch postal code ("9999 AA")
  6027.  04h    'J' or 'N' (Dutch yes/no)
  6028.  05h    telephone or FAX number
  6029.  06h    positive or negative number
  6030.  07h    date (dd/mm/yy)
  6031.  08h    money
  6032.  09h    '1' through '8'
  6033.  0Ah    '1' through '4'
  6034.  0Bh    uppercase filenames
  6035. --------l-500006-----------------------------
  6036. INT 50 - PC Thuis Organizer Shell - ALERT USER
  6037.     AX = 0006h
  6038.     ES:BX -> string
  6039. --------l-500007-----------------------------
  6040. INT 50 - PC Thuis Organizer Shell - DO LINE
  6041.     AX = 0007h
  6042.     ES:BX -> text string
  6043.     CX = string length in bytes (0000h if NUL-terminated)
  6044.     DL = FFh to center string, else flush left
  6045.     DH = upper left row
  6046.     DI = window handle
  6047. Return: AX = status
  6048.         0000h successful
  6049.         FFFFh error
  6050. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  6051.       published in the June/July 1990 issue of PC Thuis Power magazine
  6052. SeeAlso: AX=0008h
  6053. --------l-500008-----------------------------
  6054. INT 50 - PC Thuis Organizer Shell - DO MENU
  6055.     AX = 0008h
  6056.     ES:BX -> menu structure
  6057. Return: AL = index 1 or FFh if not selected
  6058.     AH = index 2 or FFh if not selected
  6059.     BL = index 3 or FFh if not selected
  6060.     BH = index 4 or FFh if not selected
  6061. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  6062. --------l-500009-----------------------------
  6063. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  6064.     AX = 0009h
  6065.     ES:BX -> message string
  6066. SeeAlso: AX=000Ah
  6067. --------l-50000A-----------------------------
  6068. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  6069.     AX = 000Ah
  6070. SeeAlso: AX=0009h
  6071. --------l-50000B-----------------------------
  6072. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  6073.     AX = 000Bh
  6074.     BL = new attribute
  6075.     CH,CL = row,column of upper left corner
  6076.     DH,DL = row,column of lower right corner
  6077.     DI = window handle
  6078. --------l-50000C-----------------------------
  6079. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  6080.     AX = 000Ch
  6081.     ES:BX -> request structure
  6082. Return: AX = status
  6083.         0000h confirmed
  6084.         FFFFh denied
  6085. SeeAlso: AX=0008h
  6086. --------l-50000D-----------------------------
  6087. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  6088.     AX = 000Dh
  6089.     ES:BX -> text string
  6090.     CL = length
  6091.     CH = input type (see #03243)
  6092.     DH,DL = row,column of upper left corner
  6093.     DI = window handle
  6094. Return: AX = result code
  6095. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  6096.       published in the June/July 1990 issue of PC Thuis Power magazine
  6097.  
  6098. Bitfields for input type:
  6099. Bit(s)    Description    (Table 03243)
  6100.  0    force uppercase
  6101.  1    integer
  6102.  2    no spaces allowed
  6103.  3    no cursor keys
  6104. --------l-50000E-----------------------------
  6105. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  6106.     AX = 000Eh
  6107.     BL = character
  6108.     BH = attribute
  6109.     DH,DL = row,column at which to plot
  6110.     DI = window handle
  6111. Return: AX = status
  6112.         0000h successful
  6113.         FFFFh errror
  6114. --------l-50000F-----------------------------
  6115. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  6116.     AX = 000Fh
  6117.     BL = character
  6118.     BH = attribute
  6119.     DI = window handle
  6120. --------l-500010-----------------------------
  6121. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  6122.     AX = 0010h
  6123.     ES:BX -> first menu structure
  6124.     CL = hotkey to look up
  6125. Return: AL = index 1 or FFh if not selected
  6126.     AH = index 2 or FFh if not selected
  6127.     BL = index 3 or FFh if not selected
  6128.     BH = index 4 or FFh if not selected
  6129. Index:    hotkeys;PC Thuis Organizer Shell
  6130. --------l-500011-----------------------------
  6131. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  6132.     AX = 0011h
  6133.     DS:SI -> source
  6134.     ES:DI -> destination
  6135.     CX = number of bytes to move (0000h = until NUL string terminator???)
  6136. SeeAlso: AX=0012h
  6137. --------l-500012-----------------------------
  6138. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  6139.     AX = 0012h
  6140.     DS:SI -> source
  6141.     ES:DI -> destination
  6142.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  6143. Return: AX = status
  6144.         0000h same
  6145.         FFFFh different
  6146. SeeAlso: AX=0011h
  6147. --------l-500013-----------------------------
  6148. INT 50 - PC Thuis Organizer Shell - GET KEY
  6149.     AX = 0013h
  6150.     CH = type flags
  6151.         bit 0: force uppercase
  6152.         bit 1: integer
  6153.         bit 2: no spaces
  6154. Return: AX = keystroke
  6155. --------l-500014-----------------------------
  6156. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  6157.     AX = 0014h
  6158.     BL = direction
  6159.         06h up
  6160.         07h down
  6161.     BH = attribute
  6162.     DI = window handle
  6163. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  6164. --------l-500015-----------------------------
  6165. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  6166.     AX = 0015h
  6167.     BL = handle size
  6168.         00h 65536 bytes (64K)
  6169.         01h 65535 bytes (64K-1)
  6170.         02h 32768 bytes (32K)
  6171.         03h 32767 bytes (32K-1)
  6172. Return: AX = segment
  6173. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  6174.       published in the June/July 1990 issue of PC Thuis Power magazine
  6175. SeeAlso: INT 21/AH=48h
  6176. --------H-51---------------------------------
  6177. INT 51 - IRQ1 relocated by DESQview
  6178. Range:    INT 51 to INT F9, selected automatically
  6179. Note:    this is the default location for older versions; see INT 50"DESQview"
  6180.       for details of interrupt relocation
  6181. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  6182. --------H-51---------------------------------
  6183. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  6184. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  6185. --------H-51---------------------------------
  6186. INT 51 - IRQ1 relocated by OS/2 v1.x
  6187. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  6188. ----------51---------------------------------
  6189. INT 51 - TI Professional PC - RESTART TIMING EVENT
  6190.     AX = timer count in 25ms intervals
  6191.     DS:DI -> timing-event table (see #03244)
  6192. Note:    documented as "for system use only"; intended for multi-tasking
  6193.       software
  6194. SeeAlso: INT 50"TI Professional",INT 52"TI Professional"
  6195.  
  6196. Format of TI Professional PC timing event table:
  6197. Offset    Size    Description    (Table 03244)
  6198.  00h    WORD    offset of next event table entry
  6199.  02h    BYTE    normally unused (FFh)
  6200.  03h    BYTE    flags:
  6201.         bit 7 set if timing event active
  6202.         bits 6-0 not used by BIOS (0), but could be used by option ROMs
  6203.  04h    WORD    timeout count (decremented every 25ms when active)
  6204.  06h    WORD    offset of event handler (in segment F400h) to call on event
  6205.           timeout; the F400h segment allows addressing both system ROMs
  6206.           and the first 16K of memory (due to the 1M memory wraparound)
  6207. --------b-51---------------------------------
  6208. INT 51 - Tandy 2000 - KEYBOARD SERVICES
  6209. Note:    this interrupt is identical to INT 16 on Tandy 2000
  6210. SeeAlso: INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h,INT 16/AH=04h"Tandy"
  6211. SeeAlso: INT 16/AH=04h,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 52"Tandy 2000"
  6212. --------H-52---------------------------------
  6213. INT 52 - IRQ2 relocated by DESQview
  6214. Range:    INT 52 to INT FA, selected automatically
  6215. Note:    this is the default location for older versions; see INT 50"DESQview"
  6216.       for details of interrupt relocation
  6217. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  6218. --------H-52---------------------------------
  6219. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6220. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  6221. ----------52---------------------------------
  6222. INT 52 - TI Professional PC - CANCEL TIMING EVENT
  6223.     DS:DI -> timing-event table (see #03244)
  6224. Note:    documented as "for system use only"; intended for multi-tasking
  6225.       software
  6226. SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
  6227. --------b-52---------------------------------
  6228. INT 52 - Tandy 2000 - VIDEO SERVICES
  6229. Note:    this interrupt is identical to INT 10
  6230. SeeAlso: INT 10/AH=00h,INT 10/AH=01h,INT 10/AH=08h,INT 10/AH=0Eh
  6231. SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 53"Tandy 2000"
  6232. --------H-53---------------------------------
  6233. INT 53 - IRQ3 relocated by DESQview
  6234. Range:    INT 53 to INT FB, selected automatically
  6235. Note:    this is the default location for older versions; see INT 50"DESQview"
  6236.       for details of interrupt relocation
  6237. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  6238. --------H-53---------------------------------
  6239. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6240. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  6241. ----------53---------------------------------
  6242. INT 53 - TI Professional PC - SVC INTERFACE
  6243. Notes:    documented as "for system use only"; intended for multi-tasking
  6244.       software
  6245.     this interrupt is not used by the BIOS; the default handler generates
  6246.       a system error trap (see INT 51"TI Professional")
  6247. SeeAlso: INT 50"TI Professional",INT 54"TI Professional"
  6248. --------b-53---------------------------------
  6249. INT 53 - Tandy 2000 - SERIAL COMMUNICATIONS
  6250. Note:    this interrupt is identical to INT 14 on Tandy 2000
  6251. SeeAlso: INT 14/AH=00h"SERIAL",INT 14/AH=01h,INT 14/AH=02h,INT 14/AH=03h
  6252. SeeAlso: INT 14/AH=04h"Tandy 2000",INT 52"Tandy 2000",INT 54"Tandy 2000"
  6253. --------N-53---------------------------------
  6254. INT 53 - WEB??? - API
  6255.     BX = function
  6256.         0000h ???
  6257.         AX = ???
  6258.         Return: AX = ???
  6259.         0004h ???
  6260.         0009h ???
  6261.         0015h
  6262.         AX = ???
  6263.         DX = ???
  6264.         0017h
  6265. Return: ???
  6266. InstallCheck:    check for the signature "WEBCO" immediately prior to the
  6267.       interrupt handler
  6268. Note:    the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  6269. Index:    installation check;unknown|installation check;WEBCO
  6270. --------H-54---------------------------------
  6271. INT 54 - IRQ4 relocated by DESQview
  6272. Range:    INT 54 to INT FC, selected automatically
  6273. Note:    this is the default location for older versions; see INT 50"DESQview"
  6274.       for details of interrupt relocation
  6275. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  6276. --------H-54---------------------------------
  6277. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6278. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  6279. ----------54---------------------------------
  6280. INT 54 - TI Professional PC - ACTIVATE TASK SUBROUTINE
  6281. Notes:    documented as "for system use only"; intended for multi-tasking
  6282.       software
  6283.     this interrupt is not used by the BIOS; the default handler generates
  6284.       a system error trap (see INT 51"TI Professional")
  6285. SeeAlso: INT 50"TI Professional",INT 53"TI Professional"
  6286. --------b-54---------------------------------
  6287. INT 54 - Tandy 2000 - LINE PRINTER
  6288. Note:    this interrupt is identical to INT 17 on Tandy 2000
  6289. SeeAlso: INT 17/AH=00h,INT 17/AH=01h,INT 17/AH=02h,INT 4A"Tandy 2000"
  6290. SeeAlso: INT 53"Tandy 2000",INT 55"Tandy 2000"
  6291. --------X-545400-----------------------------
  6292. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  6293.     AX = 5400h
  6294. Return: AX = 0054h if installed
  6295.         CX:DX -> INT function handler
  6296. --------H-55---------------------------------
  6297. INT 55 - IRQ5 relocated by DESQview
  6298. Range:    INT 55 to INT FD, selected automatically
  6299. Note:    this is the default location for older versions; see INT 50"DESQview"
  6300.       for details of interrupt relocation
  6301. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  6302. --------H-55---------------------------------
  6303. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6304. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  6305. --------b-55---------------------------------
  6306. INT 55 - TI Professional PC - RESERVED FOR FUTURE USE
  6307. Notes:    documented as "for system use only"; intended for multi-tasking
  6308.       software
  6309.     this interrupt is not used by the BIOS; the default handler generates
  6310.       a system error trap (see INT 51"TI Professional")
  6311. SeeAlso: INT 50"TI Professional",INT 56"TI Professional"
  6312. --------b-55---------------------------------
  6313. INT 55 - Tandy 2000 - SYSTEM CLOCK
  6314. Note:    this interrupt is identical to INT 1A on Tandy 2000
  6315. SeeAlso: INT 1A/AH=00h,INT 1A/AH=01h,INT 1A/AH=02h"Tandy 2000"
  6316. SeeAlso: INT 1A/AH=03h"Tandy 2000",INT 54"Tandy 2000",INT 56"Tandy 2000"
  6317. --------H-56---------------------------------
  6318. INT 56 - IRQ6 relocated by DESQview
  6319. Range:    INT 56 to INT FE, selected automatically
  6320. Note:    this is the default location for older versions; see INT 50"DESQview"
  6321.       for details of interrupt relocation
  6322. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  6323. --------H-56---------------------------------
  6324. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6325. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  6326. --------b-56---------------------------------
  6327. INT 56 - TI Professional PC - RESERVED FOR FUTURE USE
  6328. Notes:    documented as "for system use only"; intended for multi-tasking
  6329.       software
  6330.     this interrupt is not used by the BIOS; the default handler generates
  6331.       a system error trap (see INT 51"TI Professional")
  6332. SeeAlso: INT 50"TI Professional",INT 55"TI Professional"
  6333. --------b-56---------------------------------
  6334. INT 56 - Tandy 2000 - FLOPPY DISK SERVICES
  6335. Note:    this interrupt is identical to INT 13 on Tandy 2000
  6336. SeeAlso: INT 13/AH=00h,INT 13/AH=01h,INT 13/AH=02h,INT 13/AH=03h
  6337. SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 55"Tandy 2000"
  6338. --------H-57---------------------------------
  6339. INT 57 - IRQ7 relocated by DESQview
  6340. Range:    INT 57 to INT FF, selected automatically
  6341. Note:    this is the default location for older versions; see INT 50"DESQview"
  6342.       for details of interrupt relocation
  6343. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  6344. --------H-57---------------------------------
  6345. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  6346. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  6347. --------b-57---------------------------------
  6348. INT 57 C - TI Professional PC - CRT MAPPING HOOK
  6349.     AX/BX/CX/DX/BP/SI/DI same as on entry to CRT subroutine (e.g. INT 49)
  6350.     DS = BIOS system segment
  6351.     ES = DE00h
  6352. Return: DF/IF flags must be preserved
  6353.     ES,DS,BP preserved
  6354.     AX,BX,CX,DX,SI,DI may be changed as necessary to modify the original
  6355.       call
  6356. Desc:    hooking this vector permits programs to intercept or modify all
  6357.       screen output, including both application calls to INT 49 and
  6358.       calls generated internally by the BIOS which bypass INT 49
  6359. Note:    by default, this vector points at an IRET instruction
  6360. SeeAlso: INT 49/AH=01h"TI",INT 50"TI Professional"
  6361. --------H-58---------------------------------
  6362. INT 58 - IRQ8 relocated by DESQview 2.26+
  6363. Range:    INT 58 to INT F8, selected automatically
  6364. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6365. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
  6366. --------H-58---------------------------------
  6367. INT 58 - IRQ0 relocated by DoubleDOS
  6368. SeeAlso: INT 08
  6369. --------b-58---------------------------------
  6370. INT 58 C - TI Professional PC - SYSTEM TIMER 25ms HOOK
  6371. Desc:    called from the hardware timer tick interrupt, after executing the
  6372.       first four BIOS timing events, updating the system clock, invoking
  6373.       INT 5A if required, saving registers, and switching to a temporary
  6374.       stack (the one reserved for IRQ3)
  6375. Notes:    the handler for this interrupt may destroy AX,BX,DI,ES but must
  6376.       preserve all other registers; 8 WORDs of stack space are available,
  6377.       of which at most 4 may be used if the handler enables interrupts
  6378.     if the handler switches stacks (because more than 4/8 WORDs are
  6379.       required), the original stack must be restored before chaining to
  6380.       the previous handler
  6381. SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
  6382. SeeAlso: INT 5A"TI Professional"
  6383. --------H-59---------------------------------
  6384. INT 59 - IRQ9 relocated by DESQview 2.26+
  6385. Range:    INT 59 to INT F9, selected automatically
  6386. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6387. SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
  6388. --------H-59---------------------------------
  6389. INT 59 - IRQ1 relocated by DoubleDOS
  6390. SeeAlso: INT 09
  6391. --------b-59---------------------------------
  6392. INT 59 - TI Professional PC - COMMON ROM HARDWARE INTERRUPT EXIT VECTOR
  6393. Desc:    all hardware interrupts on the TI Pro jump indirectly to the handler
  6394.       pointed at by this interrupt vector to finish their handling of
  6395.       the hardware interrupt
  6396. Notes:    the default handler decrements the interrupt count, restores registers
  6397.       (including the stack pointer), sends an EOI to the interrupt
  6398.       controller, and finally does an IRET
  6399.     can be used by multitaskers which need to get control after every
  6400.       hardware interrupt
  6401. SeeAlso: INT 40"TI Professional",INT 47"TI Professional"
  6402. SeeAlso: INT 53"TI Professional"
  6403. --------V-59---------------------------------
  6404. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  6405.     DS:DX -> block of 5 array pointers
  6406. Return: CF set on error
  6407.         AX = error code
  6408.     CF clear if successful
  6409.         AX = return code
  6410. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  6411.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  6412.     also used by the IBM Graphic Development Toolkit
  6413. --------H-5A---------------------------------
  6414. INT 5A - IRQ10 relocated by DESQview 2.26+
  6415. Range:    INT 5A to INT FA, selected automatically
  6416. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6417. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
  6418. --------H-5A---------------------------------
  6419. INT 5A - IRQ2 relocated by DoubleDOS
  6420. SeeAlso: INT 0A"IRQ2"
  6421. --------N-5A---------------------------------
  6422. INT 5A - PC Cluster adapter BIOS entry address
  6423.     ???
  6424. Return: ???
  6425. SeeAlso: INT 5B"PC Cluster"
  6426. --------b-5A---------------------------------
  6427. INT 5A - TI Professional PC - SYSTEM TIMER 100ms HOOK
  6428. Desc:    called from the hardware timer tick interrupt, after executing the
  6429.       first four BIOS timing events, updating the system clock, saving
  6430.       registers, and switching to a temporary stack (the one reserved
  6431.       for IRQ3), but before calling INT 58
  6432.     no details available
  6433. Notes:    this interrupt is invoked on every fourth timer interrupt
  6434.     the handler for this interrupt may destroy AX,BX,DI,ES but must
  6435.       preserve all other registers; 8 WORDs of stack space are available,
  6436.       of which at most 4 may be used if the handler enables interrupts
  6437.     if the handler switches stacks (because more than 4/8 WORDs are
  6438.       required), the original stack must be restored before chaining to
  6439.       the previous handler
  6440. SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
  6441. SeeAlso: INT 58"TI Professional"
  6442. --------H-5B---------------------------------
  6443. INT 5B - IRQ11 relocated by DESQview 2.26+
  6444. Range:    INT 5B to INT FB, selected automatically
  6445. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6446. SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
  6447. --------H-5B---------------------------------
  6448. INT 5B - IRQ3 relocated by DoubleDOS
  6449. SeeAlso: INT 0B
  6450. --------N-5B---------------------------------
  6451. INT 5B - PC cluster adapter - RELOCATED INT 19
  6452. SeeAlso: INT 19,INT 5A"PC Cluster"
  6453. --------N-5B---------------------------------
  6454. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  6455.     ES:BX -> Network Control Block (see #03245)
  6456. Return: AL = status (see #03248)
  6457. SeeAlso: INT 5C"NetBIOS"
  6458.  
  6459. Format of Starlan Network Control Block:
  6460. Offset    Size    Description    (Table 03245)
  6461.  00h    BYTE    ncb_command (see also #03250)
  6462.         70h send net Break
  6463.  01h    BYTE    ncb_retcode
  6464.  02h    BYTE    ncb_lsn
  6465.  03h    BYTE    ncb_num
  6466.  04h    DWORD    -> ncb_buffer
  6467.  08h    WORD    ncb_length
  6468.  0Ah 16 BYTEs    ncb_callname
  6469.  1Ah 16 BYTEs    ncb_name
  6470.  2Ah    BYTE    ncb_rto
  6471.  2Bh    BYTE    ncb_sto
  6472.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  6473.  30h    BYTE    ncb_lana_num
  6474.  31h    BYTE    ncb_cmd_cplt
  6475.  32h    DWORD    -> ncb_vname
  6476.  36h    BYTE    ncb_vnamelen
  6477.  37h  9 BYTEs    ncb_reserve
  6478. Note:    fields 00h-31h are the same as for a standard NetBIOS NCB (see #03249)
  6479. --------N-5B---------------------------------
  6480. INT 5B - Microsoft Network Transport Layer Interface
  6481. Note:    used by MS-NET for executing network commands
  6482. SeeAlso: INT 5C"NetBIOS"
  6483. --------N-5B---------------------------------
  6484. INT 5B - used by Alloy NTNX
  6485. --------N-5B---------------------------------
  6486. INT 5B - ISOLAN Multi Protocol Software
  6487.     ES:BX -> Transfer Control Block (see #03246)
  6488. Return: AL = status
  6489. Note:    this software interface allows multiple protocols/software packages
  6490.       to access a BICC 411x network card
  6491.  
  6492. Format of ISOLAN Transfer Control Block:
  6493. Offset    Type    Description    (Table 03246)
  6494.  00h    BYTE    command code
  6495.         B3h Status
  6496.         F2h Activate
  6497.         F3h Deactivate
  6498.         F4h Send Data
  6499.  01h    BYTE    command identity
  6500.  02h    BYTE    virtual circuit ID
  6501.  03h    WORD    buffer length
  6502.  05h    DWORD    buffer pointer
  6503.  09h    BYTE    expedited data flag
  6504.  0Ah    BYTE    cancelable flag
  6505.  0Bh 16 BYTEs    local network address
  6506.  1Bh 16 BYTEs    remote network address
  6507.  2Bh    DWORD    asynchronous notification routine
  6508.  30h    DWORD    local network number
  6509.  34h    DWORD    remote network number
  6510.  38h    BYTE    call timeout
  6511.  39h    BYTE    not used
  6512.  3Ah  8 BYTEs    reserved
  6513.  42h    BYTE    command code extension
  6514.  43h    WORD    Blue Book MAC type
  6515. --------b-5B---------------------------------
  6516. INT 5B C - TI Professional PC - KEYBOARD MAPPING HOOK
  6517.     CF set
  6518.     AH = shift state (see #03247)
  6519.     AL = scan code (see #03214)
  6520. Return:    BX, CX, DI, ES may be destroyed
  6521.     various return methods are supported:
  6522.         IRET, AX unchanged: process keystroke normally
  6523.         IRET, AL = FFh: discard keystroke
  6524.         IRET, AX changed: process modified keystroke
  6525.         chain to old INT 5B: allow other handlers to look at (possibly
  6526.           modified) keystroke in AX
  6527.         RETF 2, CF clear: place returned AX into keyboard buffer without
  6528.           any further processing
  6529. Notes:    invoked by the keyboard ISR, and used to remap the keyboard
  6530.     if CF is clear on entry, some other handler has processed the
  6531.       keystroke and the current handler should not modify it, instead
  6532.       performing a RETF 2 or IRET (after clearing CF on the stack)
  6533.     when requesting that a value be placed directly into the keyboard
  6534.       buffer, AL and AH may not *both* be nonzero (the TI does not
  6535.       return scan codes as part of the key code for non-extended keys)
  6536. SeeAlso: INT 15/AH=4Fh,INT 4A/AH=00h"TI",INT 59"TI Professional"
  6537. SeeAlso: INT 5C"TI Professional",INT 5D"TI Professional"
  6538. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  6539.  
  6540. Bitfields for TI Professional PC keyboard mapping hook shift states:
  6541. Bit(s)    Description    (Table 03247)
  6542.  7    CAPS LOCK is on
  6543.  6-4    reserved (0)
  6544.  3    repeated key
  6545.  2    Shift is pressed
  6546.  1    Alt is pressed
  6547.  0    Ctrl is pressed
  6548. --------U-5B5254DL04-------------------------
  6549. INT 5B U - SitBack v3.02R - GET ???
  6550.     AX = 5254h
  6551.     DL = 04h
  6552. Return: ES:BX -> ??? in resident portion
  6553. Program: SitBack is a background file backup utility by SitBack Technologies,
  6554.       Inc. which initiates backups whenever the system is idle
  6555. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  6556. --------U-5B8485DL70-------------------------
  6557. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  6558.     AX = 8485h
  6559.     DL = 70h
  6560. Return: CX = 8485h if installed
  6561.         DX:AX -> ??? (configuration data?)
  6562. Program: SitBack is a background file backup utility by SitBack Technologies,
  6563.       Inc. which initiates backups whenever the system is idle
  6564. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  6565. --------U-5B8485DL71-------------------------
  6566. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  6567.     AX = 8485h
  6568.     DL = 71h
  6569. Return: ES:BX -> FAR entry point to ???
  6570. Note:    the flag which is modified is located at the address returned by
  6571.        AX=5254h/DL=04h
  6572. SeeAlso: AX=8485h/DL=72h
  6573. --------U-5B8485DL72-------------------------
  6574. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  6575.     AX = 8485h
  6576.     DL = 72h
  6577. Note:    the flag which is modified is located at the address returned by
  6578.        AX=5254h/DL=04h
  6579. SeeAlso: AX=8485h/DL=71h
  6580. --------U-5B8485DL73-------------------------
  6581. INT 5B U - SitBack v3.02R - ???
  6582.     AX = 8485h
  6583.     DL = 73h
  6584.     ???
  6585. Return: ???
  6586. --------U-5B8485DL74-------------------------
  6587. INT 5B U - SitBack v3.02R - ???
  6588.     AX = 8485h
  6589.     DL = 74h
  6590.     ???
  6591. Return: ???
  6592. --------U-5B8485DL75-------------------------
  6593. INT 5B U - SitBack v3.02R - ???
  6594.     AX = 8485h
  6595.     DL = 75h
  6596.     CX = ???
  6597. Return: ???
  6598. SeeAlso: AX=8485h/DL=76h
  6599. --------U-5B8485DL76-------------------------
  6600. INT 5B U - SitBack v3.02R - ???
  6601.     AX = 8485h
  6602.     DL = 76h
  6603.     CX = ???
  6604. Return: ???
  6605. Note:    conditionally calls the code for AX=8485h/DL=75h
  6606. SeeAlso: AX=8485h/DL=75h
  6607. --------U-5B8485DL77-------------------------
  6608. INT 5B U - SitBack v3.02R - SET ??? FLAG
  6609.     AX = 8485h
  6610.     DL = 77h
  6611. --------U-5B8485DL78-------------------------
  6612. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  6613.     AX = 8485h
  6614.     DL = 78h
  6615. Return: CX = 5342h if supported
  6616.         ES = AX = segment of TSR data
  6617. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  6618. --------U-5B8485DL79-------------------------
  6619. INT 5B U - SitBack v3.02R - GET DTA
  6620.     AX = 8485h
  6621.     DL = 79h
  6622. Return: CX = 5342h if supported
  6623.         ES:BX -> DTA set by last INT 21/AH=1Ah
  6624. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  6625. SeeAlso: INT 21/AH=1Ah
  6626. --------U-5B8485DL7A-------------------------
  6627. INT 5B U - SitBack v3.02R - TOGGLE ???
  6628.     AX = 8485h
  6629.     DL = 7Ah
  6630. Return: CX = 5342h if supported
  6631.         AL = new value of ??? (00h or 01h)
  6632. --------N-5C---------------------------------
  6633. INT 5C - NetBIOS INTERFACE
  6634.     ES:BX -> network control block (NCB) (see #03249)
  6635. Return: AL = status (see #03248)
  6636. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  6637.       programming interface to the IBM PC Network; the first implementation
  6638.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  6639.       current networks support NetBIOS as the session layer.
  6640. Note:    The Sytek PCnet card uses DMA 3.
  6641. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B"Extended NetBIOS"
  6642.  
  6643. (Table 03248)
  6644. Values for NetBIOS status:
  6645.  00h    successful
  6646.  01h    bad buffer size
  6647.  03h    invalid NETBIOS command
  6648.  05h    timeout
  6649.  06h    receive buffer too small
  6650.  07h    No-ACK command failed
  6651.  08h    bad session number
  6652.  09h    LAN card out of memory
  6653.  0Ah    session closed
  6654.  0Bh    command has been cancelled
  6655.  0Dh    name already exists
  6656.  0Eh    local name table full
  6657.  0Fh    name still in use, can't delete
  6658.  11h    local session table full
  6659.  12h    remote PC not listening
  6660.  13h    bad NCB_NUM field
  6661.  14h    no answer to CALL or no such remote
  6662.  15h    name not in local name table
  6663.  16h    duplicate name
  6664.  17h    bad delete
  6665.  18h    abnormal end
  6666.  19h    name error, multiple identical names in use
  6667.  1Ah    bad packet
  6668.  21h    network card busy
  6669.  22h    too many commands queued
  6670.  23h    bad LAN card number
  6671.  24h    command finished while cancelling
  6672.  26h    command can't be cancelled
  6673.  30h    name defined by another process (OS/2)
  6674.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  6675.  35h    required operating system resources exhausted (OS/2)
  6676.  36h    maximum applications exceeded (OS/2)
  6677.  37h    no SAPs available for NetBIOS (OS/2)
  6678.  38h    requested resources not available (OS/2)
  6679.  40h    Lana System Error
  6680.  41h    Lana Remote Hot Carrier
  6681.  42h    Lana Local Hot Carrier
  6682.  43h    Lana No Carrier Detected
  6683.  44h    unusual network condition
  6684.  45h-4Dh hardware error
  6685.  4Eh    token ring is broken
  6686.  4Fh    token ring error
  6687.  50h    adapter malfunction
  6688.  F7h    error in explicit INITIALIZE
  6689.  F8h    error in implicit OPEN
  6690.  F9h    TOKREUI internal error
  6691.  FAh    hardware adapter testing
  6692.  FBh    NetBIOS emulator not found
  6693.  FCh    OPEN or OPEN_SAP failure
  6694.  FDh    unexpected adapter closure
  6695.  FFh    NetBIOS busy (command pending)
  6696.  
  6697. Format of NetBIOS Network Control Block:
  6698. Offset    Size    Description    (Table 03249)
  6699.  00h    BYTE    command code (see #03250)
  6700.  01h    BYTE    return code (see #03248)
  6701.  02h    BYTE    local session number (LSN)
  6702.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  6703.  04h    DWORD    -> I/O buffer
  6704.  08h    WORD    length of data in buffer
  6705.  0Ah 16 BYTEs    remote system to call
  6706.  1Ah 16 BYTEs    network name of local machine
  6707.  2Ah    BYTE    receive timeout in 1/2 seconds
  6708.  2Bh    BYTE    send timeout in 1/2 seconds
  6709.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  6710.  30h    BYTE    network adapter number on which to execute command
  6711.         00h-03h IBM NetBIOS specs
  6712.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  6713.  31h    BYTE    command completion code (see #03248)
  6714.  32h 14 BYTEs    reserved for network card
  6715.  
  6716. (Table 03250)
  6717. Values for NetBIOS command code field in NCB:
  6718.  10h    start session with NCB_NAME name (call)
  6719.  11h    listen for call
  6720.  12h    end session with NCB_NAME name (hangup)
  6721.  14h    send data via NCB_LSN
  6722.  15h    receive data from a session
  6723.  16h    receive data from any session
  6724.  17h    send multiple data buffers
  6725.  20h    send unACKed message (datagram)
  6726.  21h    receive datagram
  6727.  22h    send broadcast datagram
  6728.  23h    receive broadcast datagram
  6729.  30h    add name to name table
  6730.  31h    delete name from name table
  6731.  32h    reset adapter card and tables
  6732.  33h    get adapter status (see #03251)
  6733.  34h    status of all sessions for name (see #03253)
  6734.  35h    cancel
  6735.  36h    add group name to name table
  6736.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  6737.  70h    unlink from IBM remote program (no F0h function)
  6738.  71h    send data without ACK
  6739.  72h    send multiple buffers without ACK
  6740.  72h    UngermannBass Register (conflicts with above function)
  6741.  73h    UngermannBass SendNmc
  6742.  74h    UngermannBass Callniu
  6743.  75h    UngermannBass Calladdr
  6744.  76h    UngermannBass Listenaddr
  6745.  77h    UngermannBass SendPkt
  6746.  78h    find name
  6747.  78h    UngermannBass RcvPkt (conflicts with above function)
  6748.  79h    token-ring protocol trace
  6749.  79h    UngermannBass SendAttn (conflicts with above function)
  6750.  7Ah    UngermannBass RcvAttn
  6751.  7Bh    UngermannBass Listenniu
  6752.  7Ch    UngermannBass RcvRaw
  6753.  7Dh    UngermannBass SendNmc2
  6754.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  6755.       completion code both set to 03h, while invalid functions return only
  6756.       return code field set to 03h)
  6757. Note:    OR any of the above except 70h with 80h for non-waiting call
  6758.  
  6759. Format of NetBIOS structure "astatus":
  6760. Offset    Size    Description    (Table 03251)
  6761.  00h  6 BYTEs as_id
  6762.  06h    BYTE  as_jumpers
  6763.  07h    BYTE  as_post
  6764.  08h    BYTE  as_major
  6765.  09h    BYTE  as_minor
  6766.  0Ah    WORD  as_interval
  6767.  0Ch    WORD  as_crcerr
  6768.  0Eh    WORD  as_algerr
  6769.  10h    WORD  as_colerr
  6770.  12h    WORD  as_abterr
  6771.  14h    DWORD as_tcount
  6772.  18h    DWORD as_rcount
  6773.  1Ch    WORD  as_retran
  6774.  1Eh    WORD  as_xresrc
  6775.  20h  8 BYTEs as_res0
  6776.  28h    WORD  as_ncbfree
  6777.  2Ah    WORD  as_ncbmax
  6778.  2Ch    WORD  as_ncbx
  6779.  2Eh  4 BYTEs as_res1
  6780.  32h    WORD  as_sespend
  6781.  34h    WORD  as_msp
  6782.  36h    WORD  as_sesmax
  6783.  38h    WORD  as_bufsize
  6784.  3Ah    WORD  as_names
  6785.  3Ch 16 name structures     as_name (see #03252)
  6786. Note:    it has been reported that the first field should be 16 bytes instead
  6787.       of six (shifthing all remaining fields by ten bytes)
  6788.  
  6789. Format of NetBIOS structure "name":
  6790. Offset    Size    Description    (Table 03252)
  6791.  00h 16 BYTEs "nm_name" symbolic name
  6792.  10h    BYTE  "nm_num" number associated with name
  6793.  11h    BYTE  nm_status
  6794.  
  6795. Format of NetBIOS structure "sstatus":
  6796. Offset    Size    Description    (Table 03253)
  6797.  00h    BYTE    number of sessions being reported
  6798.  01h    BYTE    number of sessions with this name
  6799.  02h    BYTE    number of outstanding receive datagrams
  6800.  03h    BYTE    number of outstanding ReceiveAnys
  6801.  04h    var    session structures (see #03254)
  6802.  
  6803. Format of NetBIOS structure "session":
  6804. Offset    Size    Description    (Table 03254)
  6805.  00h    BYTE    local session number
  6806.  01h    BYTE    state
  6807.         01h listen pending
  6808.         02h call pending
  6809.         03h session established
  6810.         04h hangup pending
  6811.         05h hangup done
  6812.         06h session aborted
  6813.  02h 16 BYTEs    local name
  6814.  12h 16 BYTEs    remote name
  6815.  22h    BYTE    number of outstanding receives
  6816.  23h    BYTE    number of outstanding sends/chainsends
  6817. --------H-5C---------------------------------
  6818. INT 5C - IRQ12 relocated by DESQview 2.26+
  6819. Range:    INT 5C to INT FC, selected automatically
  6820. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  6821. SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
  6822. --------H-5C---------------------------------
  6823. INT 5C - IRQ4 relocated by DoubleDOS
  6824. SeeAlso: INT 0C
  6825. --------N-5C---------------------------------
  6826. INT 5C - TOPS INTERFACE
  6827.     ES:BX -> Network Control Block
  6828. Note:    TOPS card uses DMA 1, 3 or none.
  6829. --------N-5C---------------------------------
  6830. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  6831.     DX:BX -> control block (see #03256)
  6832. Return: none
  6833. InstallCheck:    test for the signature "AppleTalk" 16 bytes prior to the
  6834.       interrupt handler
  6835. Range:    INT 5Ch to INT 70h
  6836. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  6837.  
  6838. (Table 03255)
  6839. Values for ATALK.SYS command code:
  6840.  01h    "AT_INIT"        initialize the driver
  6841.  02h    "AT_KILL"
  6842.  03h    "AT_GETNETINFO" get current network info incl init status
  6843.  04h    "AT_GETCLOCKTICKS"
  6844.  05h    "AT_STARTTIMER"
  6845.  06h    "AT_RESETTIMER"
  6846.  07h    "AT_CANCELTIMER"
  6847.  10h    "LAP_INSTALL"
  6848.  11h    "LAP_REMOVE"
  6849.  12h    "LAP_WRITE"
  6850.  13h    "LAP_READ"
  6851.  14h    "LAP_CANCEL"
  6852.  20h    "DDP_OPENSOCKET"
  6853.  21h    "DDP_CLOSESOCKET"
  6854.  22h    "DDP_WRITE"
  6855.  23h    "DDP_READ"
  6856.  24h    "DDP_CANCEL"
  6857.  30h    "NBP_REGISTER"
  6858.  31h    "NBP_REMOVE"
  6859.  32h    "NBP_LOOKUP"
  6860.  33h    "NBP_CONFIRM"
  6861.  34h    "NBP_CANCEL"
  6862.  35h    "ZIP_GETZONELIST"
  6863.  36h    "ZIP_GETMYZONE"
  6864.  37h    "ZIP_TAKEDOWN"
  6865.  38h    "ZIP_BRINGUP"
  6866.  40h    "ATP_OPENSOCKET"
  6867.  41h    "ATP_CLOSESOCKET"
  6868.  42h    "ATP_SENDREQUEST"
  6869.  43h    "ATP_GETREQUEST"
  6870.  44h    "ATP_SENDRESPONSE"
  6871.  45h    "ATP_ADDRESPONSE"
  6872.  46h    "ATP_CANCELTRANS"
  6873.  47h    "ATP_CANCELRESPONSE"
  6874.  48h    "ATP_CANCELREQUEST"
  6875.  50h    "ASP_GETPARMS"
  6876.  51h    "ASP_CLOSESESSION"
  6877.  52h    "ASP_CANCEL"
  6878.  53h    "ASP_INIT"
  6879.  54h    "ASP_KILL"
  6880.  55h    "ASP_GETSESSION"
  6881.  56h    "ASP_GETREQUEST"
  6882.  57h    "ASP_CMDREPLY"
  6883.  58h    "ASP_WRTCONTINUE"
  6884.  59h    "ASP_WRTREPLY"
  6885.  5Ah    "ASP_CLOSEREPLY"
  6886.  5Bh    "ASP_NEWSTATUS"
  6887.  5Ch    "ASP_ATTENTION"
  6888.  5Dh    "ASP_GETSTATUS"
  6889.  5Eh    "ASP_OPENSESSION"
  6890.  5Fh    "ASP_COMMAND"
  6891.  60h    "ASP_WRITE"
  6892.  61h    "ASP_GETATTENTION"
  6893.  70h    "PAP_OPEN"
  6894.  71h    "PAP_CLOSE"
  6895.  72h    "PAP_READ"
  6896.  73h    "PAP_WRITE"
  6897.  74h    "PAP_STATUS"
  6898.  75h    "PAP_REGNAME"
  6899.  76h    "PAP_REMNAME"
  6900.  77h    "PAP_INIT"
  6901.  78h    "PAP_NEWSTATUS"
  6902.  79h    "PAP_GETNEXTJOB"
  6903.  7Ah    "PAP_KILL"
  6904.  7Bh    "PAP_CANCEL"
  6905.  
  6906. Format of AppleTalk control block:
  6907. Offset    Size    Description    (Table 03256)
  6908.  00h    WORD    command code (see #03255)
  6909.         OR with the following flags
  6910.         8000h start command then return
  6911.         4000h wait for interrupt service to complete
  6912.  02h    WORD    returned status
  6913.         0000h success (already initialized if func 01h)
  6914.  04h    DWORD    pointer to completion function
  6915.  08h    WORD    network number
  6916.  0Ah    BYTE    node ID
  6917. ---if general func (01h,03h), control block continues:
  6918.  0Bh    BYTE    "inf_abridge"
  6919.  0Ch    WORD    "inf_config"
  6920.  0Eh    DWORD    pointer to buffer
  6921.  12h    WORD    buffer size
  6922. ---if DDP function (20h-24h), control block continues:
  6923.  0Bh    BYTE    "ddp_addr_socket"
  6924.  0Ch    BYTE    "ddp_socket"
  6925.  0Dh    BYTE    "ddp_type"
  6926.  0Eh    DWORD    pointer to buffer
  6927.  12h    WORD    buffer size
  6928.  14h    BYTE    "ddp_chksum"
  6929. ---if Name Binding Protocol (30h-34h), control block continues:
  6930.  0Bh    BYTE    "nbp_addr_socket"
  6931.  0Ch    WORD    "nbp_toget"
  6932.  0Eh    DWORD    pointer to buffer (see #03257)
  6933.  12h    WORD    buffer size
  6934.  14h    BYTE    "nbp_interval"
  6935.  15h    BYTE    "nbp_retry"
  6936.  16h    DWORD    "nbp_entptr"
  6937. ---if AppleTalk Transaction Protocol (42h), control block continues:
  6938.  0Bh    BYTE    "atp_addr_socket"
  6939.  0Ch    WORD    "atp_socket"
  6940.  0Eh    DWORD    pointer to buffer
  6941.  12h    WORD    buffer size
  6942.  14h    BYTE    "atp_interval"
  6943.  15h    BYTE    "atp_retry"
  6944.  16h    BYTE    ATP flags
  6945.         bit 5: exactly one transaction
  6946.  17h    BYTE    "atp_seqbit"
  6947.  18h    BYTE    transaction ID
  6948.  19h  4 BYTEs    ATP user bytes
  6949.  1Dh    BYTE    number of BDS buffers
  6950.  1Eh    BYTE    number of BDS responses
  6951.  1Fh    DWORD    pointer to BDS buffers (see #03258)
  6952.  
  6953. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  6954. Offset    Size    Description    (Table 03257)
  6955.  00h    WORD    "tup_address_network"
  6956.  02h    BYTE    "tup_address_notid"
  6957.  03h    BYTE    "tup_address_socket"
  6958.  04h    BYTE    "tup_enum"
  6959.  05h 99 BYTEs    name
  6960.  
  6961. Format of BDS entries:
  6962. Offset    Size    Description    (Table 03258)
  6963.  00h    DWORD    pointer to buffer
  6964.  04h    WORD    size of buffer
  6965.  06h    WORD    BDS data size
  6966.  08h  4 BYTEs    "bds_userbytes"
  6967. --------N-5C---------------------------------
  6968. INT 5C - IBM 802.2 INTERFACE (LLC)
  6969.     ES:BX -> CCB (see #03259)
  6970. Return: none
  6971.  
  6972. Format of IBM 802.2 CCB:
  6973. Offset    Size    Description    (Table 03259)
  6974.  00h    BYTE    adapter
  6975.  01h    BYTE    command code
  6976.  02h    BYTE    return code
  6977.  03h    BYTE    work
  6978.  04h    DWORD    pointer to ???
  6979.  08h    DWORD    pointer to completion function???
  6980.  0Ch    DWORD    pointer to parameters???
  6981. --------N-5C---------------------------------
  6982. INT 5C - $25 LAN - INSTALLATION CHECK
  6983. Notes:    current versions only check whether the vector is 0000h:0000h or not
  6984.     future versions are supposed to have the signature "NET" in the three
  6985.       bytes preceding the INT 5C handler
  6986. --------b-5C0100-----------------------------
  6987. INT 5C C - TI Professional PC - KEYBOARD PAUSE KEY VECTOR
  6988.     AX = 0100h
  6989.     CF clear
  6990. Return: CF clear
  6991.         AX = keystroke to be placed into keyboard buffer
  6992.     CF set
  6993.         AX ignored
  6994. Desc:    toggle a pause flag which is checked by the CRT Device Service Routine
  6995.       (see INT 49/AH=01h"TI") and causes it to temporarily halt the
  6996.       machine on the next video-related function (until a key is pressed)
  6997. SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
  6998. SeeAlso: INT 5B"TI Professional",INT 5D"TI Professional"
  6999. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  7000. --------N-5C04-------------------------------
  7001. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  7002.     AH = 04h
  7003.     AL = COM port (0 = default)
  7004.     CX = wait count in character times (should be at least 100)
  7005. Return: ZF set if link alive
  7006. --------H-5D---------------------------------
  7007. INT 5D - IRQ13 relocated by DESQview 2.26+
  7008. Range:    INT 5D to INT FD, selected automatically
  7009. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  7010. SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
  7011. --------H-5D---------------------------------
  7012. INT 5D - IRQ5 relocated by DoubleDOS
  7013. SeeAlso: INT 0D"IRQ5",INT 5C"DoubleDOS"
  7014. --------b-5D---------------------------------
  7015. INT 5D C - TI Professional PC - KEYBOARD BREAK KEY VECTOR
  7016.     CF clear
  7017.     AX = 0000h
  7018. Return: CF clear
  7019.         AX = keystroke to place into keyboard buffer
  7020.     CF set
  7021.         AX ignored
  7022. Desc:    invoked by the keyboard ISR when Shift-BrkPause is pressed
  7023. Note:    the default handler is a simple IRET instruction
  7024. SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
  7025. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  7026. SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
  7027. --------H-5E---------------------------------
  7028. INT 5E - IRQ14 relocated by DESQview 2.26+
  7029. Range:    INT 5E to INT FE, selected automatically
  7030. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  7031. SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
  7032. --------H-5E---------------------------------
  7033. INT 5E - IRQ6 relocated by DoubleDOS
  7034. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  7035. --------b-5E---------------------------------
  7036. INT 5E C - TI Professional PC - KEYBOARD PRINT-SCREEN VECTOR
  7037.     CF set
  7038. Return: CF clear
  7039.         AX = keystroke to be placed into keyboard buffer
  7040.     CF set
  7041.         AX ignored
  7042. Desc:    hook to dump the screen to the printer
  7043. Notes:    hooked by TI MS-DOS, which provides a PRTSCRN character device which
  7044.       can invoke screen prints when a decimal digit (indicating the type
  7045.       of screen dump) is written to it
  7046.     the TI MS-DOS print-screen routine allows selective dumps of text
  7047.       only, graphics only, or text and graphics superimposed, in either
  7048.       normal or reverse, by pressing the appropriate keystroke combination:
  7049.       Shift-Print, Ctrl-Print, Alt-Print, Shift-Alt-Print, Ctrl-Alt-Print,
  7050.       or Shift-Ctrl-Print.
  7051.     the BIOS default routine for this vector is an IRET
  7052. SeeAlso: INT 05"PRINT SCREEN",INT 4A/AH=00h"TI",INT 59"TI Professional"
  7053. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  7054. SeeAlso: INT 5D"TI Professional",INT 5F"TI Professional"
  7055. --------H-5F---------------------------------
  7056. INT 5F - IRQ15 relocated by DESQview 2.26+
  7057. Range:    INT 5F to INT FF, selected automatically
  7058. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  7059. SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
  7060. --------H-5F---------------------------------
  7061. INT 5F - IRQ7 relocated by DoubleDOS
  7062. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  7063. --------b-5F---------------------------------
  7064. INT 5F C - TI Professional PC - KEYBOARD QUEUEING VECTOR
  7065. Return: all registers preserved
  7066. Desc:    hook for multitaskers to be informed when a keypress is placed in the
  7067.       keyboard buffer
  7068. Note:    the default handler is a simple IRET instruction
  7069. SeeAlso: INT 09,INT 4A/AH=00h"TI",INT 59"TI Professional"
  7070. SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
  7071. SeeAlso: INT 5D"TI Professional",INT 5E"TI Professional"
  7072. --------b-5F00-------------------------------
  7073. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  7074.     AH = 00h
  7075.     AL = video mode
  7076.         03h text,CGA color (100LX/200LX)
  7077.         06h 640x200 CGA graphics (100LX/200LX)
  7078.         07h text, system manager compliant
  7079.         20h 240x128 mono graphics, system manager compliant
  7080.         87h text, not system manager compliant
  7081.         A0h 240x128 mono graphics, not system manager compliant
  7082. Notes:    the defaults after setting the mode to graphics are (0,0) logical
  7083.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  7084.       pixel replacement FORCE, line type and fill mask all bits set
  7085.     modes 03h and 06h can also be set with the standard INT 10/AH=00h
  7086. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  7087. --------b-5F01-------------------------------
  7088. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET FILL MASK
  7089.     AH = 01h
  7090.     ES:DI -> 8-byte fill mask
  7091. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  7092.       when drawing filled rectangles; it is always aligned with the byte
  7093.       boundaries of video memory, regardless of the actual boundaries of
  7094.       the rectangle
  7095. SeeAlso: AH=02h
  7096. --------b-5F02-------------------------------
  7097. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFO
  7098.     AH = 02h
  7099.     ES:DI -> graphics info record (see #03260)
  7100. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  7101.  
  7102. Format of HP 95LX graphics info record:
  7103. Offset    Size    Description    (Table 03260)
  7104.  00h    BYTE    current video mode
  7105.  01h    BYTE    default video mode
  7106.  02h    WORD    display width in pixels
  7107.  04h    WORD    display height in pixels
  7108.  06h    WORD    current pen column
  7109.  08h    WORD    current pen row
  7110.  0Ah    WORD    current line type
  7111.  0Ch    WORD    current replacement rule
  7112.  0Eh    WORD    current pen color
  7113.  10h    WORD    current leftmost column of clip region
  7114.  12h    WORD    current rightmost column of clip region
  7115.  14h    WORD    current topmost row of clip region
  7116.  16h    WORD    current bottommost row of clip region
  7117.  18h    WORD    current column of logical origin
  7118.  1Ah    WORD    current row of logical origin
  7119.  1Ch  8 BYTEs    current fill mask
  7120. --------b-5F03-------------------------------
  7121. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  7122.     AH = 03h
  7123.     CX = column
  7124.     DX = row
  7125. SeeAlso: AH=04h
  7126. --------b-5F04-------------------------------
  7127. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET CLIP REGION
  7128.     AH = 04h
  7129.     CX = left-most column
  7130.     DX = top-most row
  7131.     SI = right-most column
  7132.     DI = bottom-most row
  7133. SeeAlso: AH=03h
  7134. --------b-5F05-------------------------------
  7135. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  7136.     AH = 05h
  7137.     AL = fill type
  7138.         00h outline, using current line type and color
  7139.         01h solid, using current color
  7140.         02h pattern, using current fill mask and color
  7141.     DX,CX = row,column of other corner of rectangle
  7142. Note:    the rectangle is drawn starting at the current pen position
  7143. SeeAlso: AH=01h,AH=06h,AH=07h
  7144. --------b-5F06-------------------------------
  7145. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW LINE
  7146.     AH = 06h
  7147.     DX,CX = row,column of end point
  7148. Note:    the line is drawn starting at the current pen position
  7149. SeeAlso: AH=05h,AH=07h
  7150. --------b-5F07-------------------------------
  7151. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PLOT POINT
  7152.     AH = 07h
  7153.     DX,CX = row,column of point
  7154. Note:    also sets pen position to the specified point
  7155. SeeAlso: AH=06h,AH=08h,AH=0Ch
  7156. --------b-5F08-------------------------------
  7157. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - MOVE PEN
  7158.     AH = 08h
  7159.     DX,CX = row,column of new pen position
  7160. SeeAlso: AH=07h,AH=09h
  7161. --------b-5F09-------------------------------
  7162. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET PEN COLOR
  7163.     AH = 09h
  7164.     AL = new color (00h = white, 01h = black)
  7165. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  7166. --------b-5F0A-------------------------------
  7167. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  7168.     AH = 0Ah
  7169.     AL = new replacement rule
  7170.         00h force
  7171.         01h AND
  7172.         02h OR
  7173.         03h XOR
  7174.         ---100LX/200LX---
  7175.         04h InvForce
  7176.         05h InvAND
  7177.         06h    InvOR
  7178.         07h InvXOR
  7179.         08h Txt
  7180. SeeAlso: AH=01h,AH=09h,AH=0Bh
  7181. --------b-5F0B-------------------------------
  7182. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LINE TYPE
  7183.     AH = 0Bh
  7184.     CX = new line type
  7185. Note:    the line type specifies 16 bits which are repeated over and over while
  7186.       drawing the pixels of a line
  7187. SeeAlso: AH=09h,AH=0Ah
  7188. --------b-5F0C-------------------------------
  7189. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET PIXEL
  7190.     AH = 0Ch
  7191.     DX,CX = row,column of pixel to read
  7192. Return: AX = pixel color
  7193. SeeAlso: AH=07h
  7194. --------b-5F0D-------------------------------
  7195. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET IMAGE
  7196.     AH = 0Dh
  7197.     DX,CX = row,column of first corner
  7198.     BP,SI = row,column of second corner
  7199.     ES:DI -> image buffer (see #03261)
  7200. Note:    the specified corners are included in the saved image
  7201. SeeAlso: AH=0Eh
  7202.  
  7203. Format of HP 95LX image buffer:
  7204. Offset    Size    Description    (Table 03261)
  7205.  00h    WORD    number of planes (always 01h on HP 95LX)
  7206.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  7207.  04h    WORD    image width in pixels
  7208.  06h    WORD    image height in pixels
  7209.  08h  N BYTEs    image data
  7210.         requires (WIDTH+7)/8 * HEIGHT bytes
  7211. --------b-5F0E-------------------------------
  7212. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PUT IMAGE
  7213.     AH = 0Eh
  7214.     AL = replacement rule (see #03262)
  7215.     DX,CX = row,column of top left corner
  7216.     ES:DI -> image buffer (see #03261)
  7217. Note:    if the specified image does not fit completely on the screen, this call
  7218.       does nothing
  7219. SeeAlso: AH=0Dh
  7220.  
  7221. Bitfields for replacement rule:
  7222. Bit(s)    Description    (Table 03262)
  7223.  2    invert image before applying rule
  7224.  1-0    function (00 force, 01 AND, 10 OR, 11 XOR)
  7225. --------b-5F0F-------------------------------
  7226. INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - WRITE TEXT
  7227.     AH = 0Fh
  7228.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  7229.     DX,CX = row,column of first character's top left corner
  7230.     ES:DI -> ASCIZ text
  7231. --------b-5F10-------------------------------
  7232. INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - GET FONT POINTER
  7233.     AH = 10h
  7234.     CX = font size of desired font
  7235.         0808h  8x8    small  (80x25 text)
  7236.         0A0Bh 11x10 medium (64x18 text)
  7237.         100Ch 12x16 large  (40x16 text)
  7238. Return: DX:AX -> ptr to font or 0000h:fontID# if built-in font
  7239. SeeAlso: AH=11h
  7240. --------b-5F11-------------------------------
  7241. INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - SET CURRENT FONT
  7242.     AH = 11h
  7243.     ES:DI -> ptr to font or 0000h:fontID# for built-in font
  7244. Note:    this function should be called immediately after AH=10h with the
  7245.       pointer supplied by that call
  7246. SeeAlso: AH=10h
  7247. --------!---Section--------------------------
  7248.